string template: fehler in der deklarationssyntax
-
hallo ihr,
es ist sehr merkwürdig. ich würde gern mit der standard c++ bibliothek und der klasse basic_string arbeiten und habe dazu den header <string> eingebunden.
in meiner .cpp funktioniert das auch, nur in der zugehörigen .h wirft er mir beim kompilieren den fehler:#include <stdio.h> #include <string> #include <iostream> #include <stdlib> extern string test; // Zeile 13 extern DWORD __fastcall WriteBackupBatch(string backupbat, string restorebat); // Zeile 29 [C++ Fehler] ExtCalls.h(13): E2141 Fehler in der Deklarationssyntax [C++ Fehler] ExtCalls.h(29): E2147 Parameterdeklaration darf nicht mit 'string' beginnenMir ist völlig unklar, wieso borland hier meckert. unter VC++ klappt das einwandfrei.
freu mich über aufklärung und wünsche schönen abend!
oli
-
Hallo
der Namespace std ist nicht offen. Also vor der string-Deklaration
using namespace std;oder bei jeder einzelnen Deklaration
std::string x;VC++ öffnet den Namespace anscheinend per Default.
bis bald
akari
-
Hallo,
Bitte
using namespace std;niemals in den Header packen. Du öffnest ja sonst den Namensbereich für alle Dateien wo der Header eingebunden wird, was den Sinn von Namensbereichen ad absurdum führt.
-
hallo,
erstmal danke an akari für die prompte antwort. zu meiner schande aber zur klärung der sache muss ich sagen, dass ich das
using namspace std;tatsächlich vergessen hatte in meiner bcb-datei, wo ich es doch in der vc++-datei drin hatte. das hat das problem natürlich behoben.
wenn ich den namespace nicht öffnen soll in der header-datei, schreibe ich dort dan n also einfach überall std::string, ja? na gut, ist ja kein problem. danke für den tip und die erklärung, Braunstein.
oli