Pré-processador
Um pré-processador é um programa que recebe texto e efectua conversões léxicas nele. As conversões podem incluir substituição de macros, inclusão condicional e inclusão de outros ficheiros. A linguagem de programação C possui um pré-processador que efectua as seguintes transformações:
O uso de pré-processadores tem vindo a ser cada vez menos comum à medida que as linguagens recentes fornecem características mais abstractas em vez de características orientadas lexicalmente. É certo que o abuso do pré-processador pode dar origem a código caótico. Ao desenhar uma linguagem de programação baseada em C, Bjarne Stroustrup introduziu características tais como funções em linha e modelos na linguagem C++ numa tentativa de tornar o pré-processador de C menos relevante. Há também linguagens recentes que tem pouca ou nenhuma funcionalidade de pré-processador, como por exemplo a linguagem Java, que não possui um pré-processador. O pré-processamento pode ser bastante incómodo ao implementar-se análise gramatical incremental ou análise léxica incremental, pois alterações às regras de pré-processamento podem afectar por completo o texto a ser pré-processado. Exemplos de C
# include <stdio.h>
# define FOO 0
int main (void)
{
/*
versão alterada do programa "olá mundo"
*/
printf("Olá, Mundo!\n");
return FOO;
}
O pré-processador de C, ao analisar este código-fonte, efectua as seguintes alterações:
# ifndef _LIBRARY_H
# define _LIBRARY_H
/*
Todo código que define o conteúdo deste arquivo header: assinatura de funções, definição de constantes, etc...
*/
# endif
Isso garante que um determinado arquivo header será incluído apenas uma vez durante a compilação de um projeto. A primeira vez que for encontrado
#include <stdlib.h>
#include <stdio.h>
#pragma pack(2)
typedef struct person t_person;
struct person {
short int id;
int sector;
short int age;
};
int main ( int argc, char *argv[] )
{
printf("sizeof t_person: %ld\n", sizeof(t_person));
return EXIT_SUCCESS;
}
Compile, execute e verifique a saída que mostra o tamanho da estrutura Referências
Information related to Pré-processador |