FCNTL -Ausgaben zusammenstellen C ++
Frage
{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'
Dieser Code verwendet fcntl.h und die definierten Funktionen der Dateihandling - wie Open (), Write (), Close () usw. Der Code kompiliert und funktioniert wie beabsichtigt.
{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)
Wenn ich ihn als CPP -Quellcode verwende, warum beschwert sich GCC? Und seltsamerweise beschwert es sich nicht für Open ()? Was passiert hier überhaupt?
Lösung
C ++ ist strenger in Bezug auf Header - Sie brauchen:
#include <unistd.h>
Um die Funktionen richtig anzugeben.global.h
Sollte nicht B - Header sollten Variablen nicht initialisieren.Beim Kompilieren sollten Sie verwenden
-Wall -Werror
Und das wird Sie zwingen, alle zwielichtigen Teile Ihres Codes zu beheben.Bekommen
exit()
sauber Sie brauchen#include <cstdlib>
(C ++) oder#include <stdlib.h>
(C)Verwenden
g++
So verknüpfen Sie C ++ Code, damit C ++ -Bibliotheken eingeschlossen werden. Wahrscheinlich am einfachsten zu tun, um das gesamte C ++ - kompiliereng++
.