2011-11-10 12 views
6

Gdzie lub jak znaleźć odpowiednie nagłówki C do włączenia do programu C++, aby uzyskać deklarację funkcji C zadeklarowaną w środowisku zgodnym z POSIX?Nagłówki dla funkcji C POSIX

pytam to, bo potrzebne do korzystania z funkcji systemowej open() w moim C++ programu do moich celów, więc początkowo próbowali zawierać nagłówki wymienione w dokumentacji online o open() (w sekcji SKŁADNIA), które są sys/stat.h i fcntl.h. Jednak podczas próby kompilacji kompilator skarżył się, że nie została zadeklarowana. Po przeszukaniu google odkryłem, że inna możliwość to unistd.h. Próbowałem użyć tego nagłówka i skompilowałem program. Więc wróciłem do dokumentacji POSIX, żeby przeczytać więcej o unistd.h, żeby sprawdzić, czy open() zostało tam wspomniane, ale nie mogłem nic na ten temat znaleźć.

Co robię źle? Dlaczego istnieje rozbieżność między dokumentacją POSIX a moim środowiskiem GCC?

Odpowiedz

8

Na moim Linux/Debian Sid, stany man 2 open strony:

SYNOPSIS 
    #include <sys/types.h> 
    #include <sys/stat.h> 
    #include <fcntl.h> 

Więc trzeba to wszystko trzy powyższe plików. I open jest zadeklarowany w /usr/include/fcntl.h, ale wymaga deklaracji z pozostałych dwóch.

i następujący plik testowy

/* file testopen.c */ 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <fcntl.h> 

int 
testopen (void) 
{ 
    return open ("/dev/null", O_RDONLY); 
} 

kompiluje z gcc -Wall -c testopen.c bez żadnych ostrzeżeń.

Powiązane problemy