Ich mag würde den folgenden Präprozessor verwenden definiert:Wie entferne ich einen C-Style-Cast aus #define, damit ich ihn in einem Präprozessor #if verwenden kann?
[3. Kopf Partei (nicht ändern)]
#define SWCI_VERSION_MAJOR (unsigned char) 4
#define SWCI_VERSION_MINOR (unsigned char) 16
Wenn sie auf diese Weise verglichen werden:
[meine Implementierung]
#if SWCI_VERSION_MAJOR >= 4 && SWCI_VERSION_MINOR >= 16
Dann erhalte ich:
schwerwiegender Fehler C1017: ungültige Integer-Konstante Ausdruck
Ich habe bemerkt, dass, wenn ich sie ohne (unsigned char) definieren wird die Richtlinie angenommen, aber ich habe keinen Zugriff auf die definiert, so würde Ich mag um das Problem möglichst zu umgehen.
Mögliche Duplikat [was bedeutet der Compiler-Fehler "missing Binäroperators vor Token" bedeuten?] (Http://stackoverflow.com/questions/21338385/what-does-the-compiler-error- missing-binary-operator-vor-token-mean) – BoBTFish
Beachten Sie, dass die Fehlermeldung unterscheidet sich von http://stackoverflow.com/q/21338385/1171191, weil es ein anderer Compiler ist, aber der Fehler ist der gleiche: Sie können ' t wirft ein '# if', weil es im Präprozessor nicht passiert, wie AShellys Antwort erklärt. – BoBTFish
@ j4nSolo Wenn Sie es so vergleichen, wie Sie es erwähnt haben, was hindert Sie daran, die MACROS ohne (unsigned char) zu definieren? –