Eu gostaria de ser capaz de fazer algo como
#print "C Preprocessor got here!"
para fins de depuração. Qual é a melhor / mais portátil maneira de fazer isso?
printing
c-preprocessor
Andrew Wagner
fonte
fonte
#ifdef _LINUX #define #preprocmsg "#warning" else #define #preprocmsg "#pragma message"
... Vou tentar fazer isso, mas o instinto me diz que a resposta é não.#define WARNING(msg) _Pragma("message " #msg)
Os itens a seguir são compatíveis com MSVC e GCC .
O Clang começou a adicionar suporte recentemente, veja aqui para mais informações.
fonte
Você pode querer tentar:
#pragma message("Hello World!")
fonte
A maioria dos compiladores C reconhecerá uma
#warning
diretiva, entãoHá também a diretiva padrão '#error',
Embora todos os compiladores suportem isso, ele também interromperá a compilação / pré-processamento.
fonte
funciona bem. Também não para a compilação, mesmo se você usar -Werror
fonte
Outra solução é usar comentários mais um script de shell para processá-los. Isso requer alguma disciplina (ou um script de shell que detecta erros de digitação).
Por exemplo, adiciono comentários formatados
//TODO
e, em seguida, um script de shell que coleta todos eles em um relatório.Para casos de uso mais complexos, você pode tentar escrever seu próprio pré-processador simples. Por exemplo, você pode editar suas fontes como
*.c2
arquivos. O pré-processador simples iria ler a fonte, procurar//TODO
e escreverprintf("TODO ...")
no*.c
arquivo de saída .fonte
Você não pode. Os pré-processadores são processados antes do código C. Não há diretivas de pré-processador para imprimir na tela, porque o código do pré-processador não é executado, ele é usado para gerar o código C que será compilado em código executável.
Qualquer coisa errada com:
Porque isso é tudo que você pode fazer no que diz respeito aos pré-processadores.
fonte