Hier ist mein toter einfacher Dummy-Code:
%Vor%Was diesen Fehler überraschenderweise aufwirft:
%Vor%Ich begann den Spuren zu folgen : Wenn der Compiler die %code% inclusions sieht, sieht er zuerst %code% , wo ich natürlich %code% file gefunden habe. Tatsächlich hat es neben dem Lizenzkommentar eine Zeile:
%Vor%Nun, bei %code% in %code% habe ich folgende Zeilen gefunden:
%Vor%Und bei %code% in %code% habe ich folgendes gefunden:
%Vor%So sieht es aus, es ist da, und es ist ein Alias des Integer-Typs und ein Teil von %code% - so wie es sein sollte.
Warum ist es dann nicht enthalten? Warum der Compiler den nicht deklarierten Bezeichnerfehler auslöst?
Vielen Dank im Voraus!
RELEVANTE INFO:
%Vor%Die Makrovariable %code% wird in %code% in %code% in den folgenden Zeilen definiert:
%Vor%UPDATE:
Wie @PaulR im Kommentarabschnitt gesagt hat: Wenn ich das %code% -Flag lösche, kompiliert es. Was genauso überraschend ist wie der Fehler, wenn die Flagge eingefügt wurde. Also erweitere ich diese Frage mit einer Unterfrage:
Ist nicht %code% Teil des C11-Standards oder warum ist er nicht enthalten, wenn der Standard für den Compiler angegeben ist?
%code% ist kein Standardtyp; es ist Teil des optionalen Anhangs K, der in ISO C11 enthalten ist, und zwar nur wegen eines bestimmten Anbieters, der den Standard ignoriert und sabotiert hat.
Da Anhang K %code% als %code% definiert, ist der Typ des %code% -Objekts %code% , und alle Fehlercodes sind %code% , verwenden Sie einfach %code% in Ihren Programmen. Es ist viel portabler als eine optionale Funktion, die wahrscheinlich nicht unterstützt wird.