Por que eu sou incapaz de stdafx.h #ifdef?
-
07-07-2019 - |
Pergunta
Eu estou tentando incluir específico da plataforma 2 stdafx.h arquivos no meu arquivo .cpp, mas o compilador é infeliz quando tento #IFDEF-lo.
#ifdef _WIN32
#include "stdafx.h"
#elif _MAC
#include "MAC/stdafx.h"
#endif
Você pode se perguntar por que eu estou usando stdafx.h no código de Mac, mas isso não é importante no momento:.)
Quando tento compilar o código no Windows, recebo: Erro fatal C1018 . Tentei anexando outros arquivos de cabeçalho com #ifdef no mesmo arquivo, eo compilador estava feliz. Portanto, parece que o Windows não gosta stdafx.h ser # ifdef-ed, ou que o Windows só permite # include stdafx.h para ser a primeira linha no arquivo.
Assim, a minha pergunta é: por quê?
Kat
Solução
Quando o compilador inclui um cabeçalho pré-compilado, ele basicamente "esquece" qualquer coisa que veio antes do cabeçalho. Assim, a sua #elif não corresponde a um #if mais.
Outras dicas
Este é porque você Precompiled cabeçalhos ligado -. Desligá-lo e você deve ser fino