penso che la specifica e la documentazione sono abbastanza chiare su questo argomento, ma la specifica fa una distinzione importante tra direttive del preprocessore lessicali e direttive del compilatore (vedi §12.4):
Compiler le direttive sono dichiarazioni in moduli non nidificati o gruppi di dichiarazione dello spazio dei nomi nel seguente formato:
# id string ... string
I direttive del preprocessore lessicali#if
, #else
, #endif
e #indent "off"
sono simili a compilatore direttive. Per dettagli su #if
, #else
, #endif
, vedere §3.3. La direttiva #indent "off"
è descritta in §18.4.
La mia interpretazione è che direttive del preprocessore lessicali sono in realtà hanled da alcuni preprocessore prima di eseguire la compilazione principale e quindi il rientro non importa per questi.
D'altra parte, le direttive come #r
, #load
, #time
ecc vengono elaborati successivamente dal compilatore e quindi hanno bisogno per soddisfare le consuete linee guida # indentazione F.
Come @unwind dice, il documentation Stati "L'indentazione non è significativo per le direttive del preprocessore", ma credo che questo vale solo per le direttive del preprocessore elencati in quella pagina di documentazione (che sono direttive del preprocessore lessicali e non direttive del compilatore).
fonte
2012-10-30 13:00:42
Grazie Tomas. È stato abbastanza facile aggirare una volta che l'ho capito. Mi chiedevo solo se fosse un vero problema o semplicemente mi fraintendessi qualcosa. –
È un punto interessante :-) Ero piuttosto curioso di sapere se questo è effettivamente descritto da qualche parte - la specifica aiuta un po '. –