Können # bedingte Bereiche Dateigrenzen überschreiten?

8

Im MSDN ( Ссылка ) sehe ich Folgendes:

  

Alle Anweisungen zur bedingten Kompilierung, z. B. #if und #ifdef, müssen   mit dem Schließen von #endif-Anweisungen vor dem Ende der Datei übereinstimmen;   Andernfalls wird eine Fehlermeldung generiert. Bei der bedingten Kompilierung   Direktiven sind in Include-Dateien enthalten, sie müssen dasselbe erfüllen   Bedingungen: Es darf keine nicht übereinstimmende bedingte Kompilierung geben   Anweisungen am Ende der Include-Datei.

Nun, einfach und klar. Zur gleichen Zeit kann ich sowas im C ++ 11 Standard nicht finden. Meine Frage ist diese rechtliche Beschränkung?

Ich verstehe völlig, dass das Aufteilen der bedingten Kompilierung über mehrere #include -Schichten keine gute Idee ist und vermieden werden sollte.

Weiß jemand, wie andere Compiler (GCC, CLANG) diesen Fall behandeln? Vielleicht wurde das irgendwo diskutiert?

    
Kirill Kobelev 28.02.2016, 22:29
quelle

1 Antwort

2
%Vor%

und hashif.h enthalten das:

%Vor%

dann gibt clang ++ einen Fehler.

%Vor%

Bearbeiten: Und g++ und cpp verhalten sich alle gleich.

Genaue Ausgabe von:

%Vor%     
Mats Petersson 28.02.2016, 22:36
quelle