Articles of c pré processador

Macro vs function em C

Eu sempre vi exemplos e casos em que usar uma macro é melhor do que usar a function. Alguém poderia me explicar com um exemplo a desvantagem de uma macro em comparação com uma function?

Incluindo um arquivo de origem C em outro?

Está tudo bem (ou até recomendado / boa prática) para o arquivo #include .c em outro arquivo .c? O que acontece quando eles são incluídos em um arquivo de projeto?

O pré-processador de despejo do GCC define

Existe uma maneira de gcc / g + + para despejar seu pré-processador define a partir da linha de comando? Quero dizer coisas como __GNUC__ , __STDC__ e assim por diante.

Como fazer uma macro variádica (número variável de argumentos)

Eu quero escrever uma macro em C que aceita qualquer número de parâmetros, não um número específico exemplo: #define macro( X ) something_complicated( whatever( X ) ) onde X é qualquer número de parâmetros Eu preciso disso porque o whatever está sobrecarregado e pode ser chamado com 2 ou 4 parâmetros. Eu tentei definir a […]

Quais são as aplicações do operador de pré-processamento ## e as pegadinhas a serem consideradas?

Como mencionado em muitas das minhas perguntas anteriores, estou trabalhando com K & R e estou atualmente no pré-processador. Uma das coisas mais interessantes – algo que eu nunca soube antes de qualquer uma das minhas tentativas anteriores para aprender C – é o operador pré-processador ## . De acordo com K & R: O […]

Por que as macros do pré-processador são malignas e quais são as alternativas?

Eu sempre perguntei isso, mas nunca recebi uma resposta realmente boa; Eu acho que quase qualquer programador antes mesmo de escrever o primeiro “Hello World” encontrou uma frase como “macro nunca deve ser usada”, “macro são malignas” e assim por diante, minha pergunta é: por quê? Com o novo C ++ 11 existe uma alternativa […]

Combinando C ++ e C – como funciona o #ifdef __cplusplus?

Eu estou trabalhando em um projeto que tem um monte de código C legado. Nós começamos a escrever em C ++, com a intenção de eventualmente converter o código legado, também. Estou um pouco confuso sobre como o C e o C ++ interagem. Eu entendo que ao envolver o código C com o extern […]

Devo usar #include nos headers?

É necessário #include algum arquivo, se dentro de um header (* .h), os tipos definidos neste arquivo são usados? Por exemplo, se eu usar o GLib e desejar usar o tipo básico do gchar em uma estrutura definida no meu header, é necessário fazer um #include , sabendo que eu já o tenho no meu […]

Como faço para ver um arquivo de origem C / C ++ após o pré-processamento no Visual Studio?

Digamos que eu tenha um arquivo de origem com muitas diretivas de pré-processamento. É possível ver como fica depois que o pré-processador é feito com ele?

C #define macro para impressão de debugging

Tentando criar uma macro que pode ser usada para mensagens de debugging de impressão quando o DEBUG é definido, como o seguinte pseudo-código: #define DEBUG 1 #define debug_print(args …) if (DEBUG) fprintf(stderr, args) Como isso é feito com uma macro?