Projekt von C++ Borland 6 nach Embarcadero Rad Studio 10.1 Berlin emigrieren
-
Hallo Zusammen
ich habe ein Projekt, das in C++ Borland 6 implementiert wurde .
und ich möchte es zu Embarcadero Rad Studio 10.1 Berlin emigrieren.
leider bekomme ich folgenden Fehler.
könnte jemand verlicht mir helfen?
dank schön[[bcc32 Fehler] Winapi.IpExport.hpp(32): E2257 , erwartet
Vollständiger Parser-Kontext Engine.cpp(11): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\vcl\vcl.h vcl.h(10): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\vcl\basepch0.h basepch0.h(76): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\vcl\Vcl.Forms.hpp Vcl.Forms.hpp(32): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\rtl\System.Win.TaskbarCore.hpp System.Win.TaskbarCore.hpp(20): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\rtl\System.Win.Taskbar.hpp System.Win.Taskbar.hpp(20): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\rtl\Winapi.ShlObj.hpp Winapi.ShlObj.hpp(20): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\rtl\Winapi.ShellAPI.hpp Winapi.ShellAPI.hpp(19): #include c:\program files (x86)\embarcadero\studio\18.0\include\windows\rtl\Winapi.IpExport.hpp Winapi.IpExport.hpp(27): namespace Winapi Winapi.IpExport.hpp(29): namespace Ipexport~~~~~~~~
-
Für alle, die so verwirrt sind wie ich: Die Fehlermeldung "E2257 , erwartet" ist zu lesen als "E2257: Komma erwartet".
Das ist natürlich ein ganz schön langer Kontext, aber da ich mal davon ausgehen würde, dass die Winapi Header wahrscheinlich richtig sind, liegt der Fehler höchstwahrscheinlich in deinem Code, nämlich direkt bevor die große Include-Orgie losgeht. Wahrscheinlich fehlt da ein
}
,;
,,
oder ähnliches in deinem Code, und dann kommt ein#include
und sorgt dafür, dass der Kontext in der Fehlermeldung so aufgebläht wird.
-
So was Ähnliches hatten wir glaube ich auch mal. Das Problem war, dass irgendwo ein #define genauso hieß, wie der Name eines Parameters in einer Funktionssignatur, beides Out-of-the-box der Embarcadero Installation.
Irgendwo in einer .h oder .hpp Datei der mitgelieferten Dateien gab es#define M1 <keine Ahnung mehr was>
und in einer anderen
void IrgendEineFunktion( double M1 );
Je nach dem, in welcher Reihenfolge die Header inkludiert werden, war M1 entweder unbesetzt und der Parametername gültig oder der Präprozessor hat M1 ersetzt und dann stolpert der Compiler über eine seltsame Funktionssignatur. Das gab´s in mehreren Fällen, wir haben da einfach den Parameternamen umbenannt und dann ging´s wieder.