Sto provando a generare il nome del file incluso nella macro. Questo dovrebbe essere legale in C++:Genera il nome del file incluso in una macro
#define INCLUDE_FILE "module_impl_win.hpp"
#include INCLUDE_FILE
questo funziona bene, ma non appena provo a nome file generato è failes compilare
#define INCLUDE_FILE(M) M##"_impl_win.hpp"
#include INCLUDE_FILE("module")
In realtà mi dà avvertimento sul MSVC2010
avviso C4067: gettoni inaspettate seguente direttiva del preprocessore - previsto un Newlin
ma non include il file.
Qual è il problema? Come posso liberarmene?
Devi stare attento con questo approccio.'_impl_win' è un token identificatore e poiché inizia con un trattino basso (e si trova nel namespace della macro), è riservato all'implementazione. Si dovrebbe rompere il '_' principale e concatenarlo separatamente, anche se in cima alla mia testa non sono sicuro di come farlo qui poiché' _' stesso è un identificatore riservato. –
BTW, quanto è portatile? – ledokol
@James McNellis: Standard riserva solo nomi con un trattino basso seguito da caratteri maiuscoli (o nomi contenenti doppio trattino basso). Non so perché Sutter consiglia di evitare l'uso del carattere di sottolineatura ovunque .. – ledokol