FCNTL выпускает компиляцию C ++
Вопрос
{net04:~/xxxx/wip} gcc -o write_test write_test.c
In file included from write_test.c:4:
global.h:10: warning: `b' initialized and declared `extern'
Этот код использует fcntl.h и определенные функции обработки файлов - например, open (), write (), close () и т. Д. Код компилируется и работает, как предполагалось.
{net04:~/xxxx/wip} gcc -o write_test write_test.cpp
In file included from write_test.cpp:4:
global.h:10: warning: `b' initialized and declared `extern'
write_test.cpp: In function `int main()':
write_test.cpp:56: error: `exit' undeclared (first use this function)
write_test.cpp:56: error: (Each undeclared identifier is reported only once for each function it appears in.)
write_test.cpp:58: error: `write' undeclared (first use this function)
write_test.cpp:62: error: `close' undeclared (first use this function)
Когда я использую его как исходный код CPP, почему GCC жалуется? И любопытно, почему это не жалуется на Open ()? Что здесь происходит?
Решение
C ++ более строгих в заголовках - вам нужно:
#include <unistd.h>
Чтобы правильно получить указанные функции.global.h
Не должно определять заголовки B - не должны инициализировать переменные.При компиляции вы должны использовать
-Wall -Werror
И это заставит вас исправить все хитрые кусочки вашего кода.Получить
exit()
Чисто, вам понадобится#include <cstdlib>
(C ++) или#include <stdlib.h>
(C)Использовать
g++
Связать код C ++, чтобы библиотеки C ++ были включены. Вероятно, легче всего сделать весь компиляция C ++ сg++
.