c++ compiler-Fehlermeldung "wurde nicht deklariert in diesem Bereich"

Ich bin immer ein bizarre compiler-Fehler beim kompilieren eines c++ - UDP-client-Programm.

g++ -o client Udp.cpp ClientMain.c -I. -lpthread

In der Datei enthalten, aus ClientMain.c:1:0:

Udp.h: In destructor 'CUdpMsg::~CUdpMsg()':

Udp.h:103:43: Fehler: "frei" wurde nicht deklariert in diesem Umfang

Udp.h: In member function 'void CUdpMsg::Add(in_addr_t, const void*, size_t)':

Udp.h:109:34: Fehler: 'malloc' wurde nicht deklariert, in diesem Umfang

Udp.h:109:41: Fehler: 'memcpy' wurde nicht deklariert, in diesem Umfang

ClientMain.c: In function 'int main(int, char**)':

ClientMain.c:28:57: Fehler: 'memcpy' wurde nicht deklariert, in diesem Umfang

ClientMain.c:29:61: Fehler: "printf" wurde nicht deklariert in diesem Umfang

ClientMain.c:30:17: Fehler: "stdout" nicht deklariert, in diesem Umfang

ClientMain.c:30:23: Fehler: "fflush" wurde nicht deklariert in diesem Umfang

ClientMain.c:34:68: Fehler: "printf" wurde nicht deklariert in diesem Umfang

ClientMain.c:35:17: Fehler: "stdout" nicht deklariert, in diesem Umfang

ClientMain.c:35:23: Fehler: "fflush" wurde nicht deklariert in diesem Umfang

ClientMain.c:37:30: error: 'usleep' wurde nicht deklariert, in diesem Umfang

Habe ich Folgendes deklariert am Anfang meiner cpp-Datei.

#include <netinet/in.h>
#include <netdb.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <fcntl.h>
#include <ifaddrs.h>
#include <net/if.h>
#include <cstdlib> 
#include <string>
#include <stdlib.h>
#include <cstring>

#include <errno.h>

Funktionen wie 'memcpy' erklärt werden sollte in der Zeichenkette.h... ich habe es (und string und cstring) alles erklärt, und ich bin immer noch daran, diese compiler-Fehler. Hat jemand eine Ahnung, warum dies passiert ist? Danke.

Sie sagen, Sie haben diese enthält in Ihrem "cpp" - Datei, aber die Fehler sind in ClientMain.c (Hinweis:.c, nicht .cpp)?
Ich glaube, Sie brauchen, um einige dieser Dateien in UDP.h
sind Sie angeben, std-namespace für diese Funktion ruft
Sie brauchen nicht, um anzugeben std::malloc wenn Sie inklusive der C-Header (d.h. der ist .h)
ich bin damit einverstanden. aber es ist keine gute Praxis einschließlich der beiden <stdlib.h> und <cstdlib>.

InformationsquelleAutor Mike | 2011-07-19

Schreibe einen Kommentar