Hallo,
wie kann ich den MOCer zum Überspringen einer Header-Datei überreden? Ich habe da eine Variable "slot", die offensichtlich vom MOCer als Qt-Schlüsselwort uminterpretiert wird. Ich möchte allerdings die Variable auch nicht eigenmächtig umbenennen, da es sich hier um Schnittstellen handelt.
Gibt es dazu ein #pragma oder #define?
[gelöst] MOCing für ein einige Header-Dateien abstellen
[gelöst] MOCing für ein einige Header-Dateien abstellen
Zuletzt geändert von Cartman am 20. Februar 2008 11:15, insgesamt 1-mal geändert.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Wäre mir neu das der MOC von sich aus Header-Dateien bearbeitet. Wenn er einen Header in Ruhe lassen soll, dann ruf ihn nicht damit auf.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Ich habe kein QT_OBJECT im Header eingebaut. Die betroffenen Header sind 100 % Qt-frei. Trotzdem gibt es Probleme, sobald der Variablenname "slots" ins Spiel kommt:
Jeder andere Name wie "slot" oder "slotx" funktioniert. Ich habe auch schon versucht, die Header aus dem qmake-Projekt (HEADER=...) rauszunehmen: immer noch der gleiche Fehler. An einer Vererbungskollision bei diesem Variablennamen liegt es auch nicht. Auch gibt es weit und breit keinen Typen mit dem Namen "slots", "Slots", etc.
Code: Alles auswählen
c:\dokumente und einstellungen\UserXYZ\eigene dateien\ebn\kbl\KBL_part_structure_base.h(197) : error C2208: 'std::vector<_Ty>': Keine Elemente definiert, die diesen Typ verwenden
with
[
_Ty=KBL::Connectivity::Slot_occurrence *
]
c:\dokumente und einstellungen\UserXYZ\eigene dateien\ebn\kbl\KBL_part_structure_base.h(197) : fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.
NMAKE : fatal error U1077: ""c:\Programme\Microsoft Visual Studio 8\VC\BIN\cl.EXE"": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: ""c:\Programme\Microsoft Visual Studio 8\VC\BIN\nmake.exe"": Rückgabe-Code "0x2"
Stop.
Problem ist wohl, dass der Header irgentwo eingebunden wird und dann noch durch den pp läuft.
Versuche mal
am anfang der Datei.
Oder
Versuche mal
Code: Alles auswählen
#undef slotsOder
Code: Alles auswählen
#define QT_NO_KEYWORDSin der Qt-Datei
\src\corelib\kernel\qobjectdefs.h
wird das Makro definiert. Das Makro enthält nichts und ist nur zum entfernen des "Schlüsselwortes" im Quellcode da.
Am besten ist es wohl, wenn du direkt von und direkt nach der detreffenden Funktion das Qt-Makro aus, bzw. wieder ein schaltest.
\src\corelib\kernel\qobjectdefs.h
wird das Makro definiert. Das Makro enthält nichts und ist nur zum entfernen des "Schlüsselwortes" im Quellcode da.
Am besten ist es wohl, wenn du direkt von und direkt nach der detreffenden Funktion das Qt-Makro aus, bzw. wieder ein schaltest.
Code: Alles auswählen
#undef slots
// Deine Funktion
#define slots