Melhor resposta
#define é a instrução do pré-processador na linguagem C.
Todas as instruções prefixadas com # são pré-processador declarações.
1.
#define MAX\_STUDENTS 200
#define é usado para declara constantes de macro (de qualquer tipo), conforme mostrado acima. Se um valor for usado em vários lugares, no código, a manutenção do código se torna fácil. Quando o valor de MAX\_STUDENTS precisa ser alterado, ele precisa ser alterado apenas em uma linha de código, em vez de vários lugares.
A desvantagem dessa abordagem é o depurador, não reconhece esse valor.
int arr [MAX\_STUDENTS];
Também pode ser usado na compilação condicional, conforme mostrado abaixo
#define WINDOWS
#ifdef WINDOWS
..
.. code of Windows OS
..
#else
..
.. code of Linux OS
..
#endif
NOTA: #undef pode ser usado para cancelar
2.
#define SQUARE (x) (x * x)
funções macro, são como funções normais, exceto que o pré-processador substitui as chamadas de método, em vez de chamar a função durante o tempo de execução.
As vantagens são a sobrecarga de chamada de função evitada, portanto a execução é mais rápida
SQUARE (2 + 3)
A desvantagem é que a função macro não se comporta como funções normais. Por exemplo, considere a chamada de macro SQUARE (2 + 3) acima, que resulta no valor 11 incorreto, onde como a função normal retorna 25.
Recomenda-se usar a função macro (em vez da função normal), quando o tamanho tem uma ou duas linhas e não tem efeitos colaterais, como mostrado acima.
Resposta
#define é um C pré-processador diretiva usada para definir macros .
Vamos decompô-lo.
Uma diretiva de pré-processador é uma instrução de programa que é chamada antes da compilação do programa. Na verdade, qualquer linha seguida por # caractere é um pré-processador. Isso inclui a unidade include também. As diretivas do pré-processador são usadas para fornecer instruções gerais ou dados necessários que são usados dentro de um programa.
Uma macro é um bloco de código que recebeu um nome. Qualquer ocorrência desse nome é substituída cedido pelo valor da macro. Digamos, eu defini a macro chamada AMOUNT cujo valor é 200. Agora, toda vez que a palavra AMOUNT é usada no programa, ela é substituída pelo número 200 antes da compilação. Em contraste com as variáveis, onde os dados são armazenados dentro delas, as macros agem como nomes de alias.
A sintaxe da diretiva #define é a seguinte:
#define MACRONAME value
OU
#define MACRONAME (expression)
Uma macro pode receber um valor numérico e também um caractere (deve estar entre aspas). As macros podem ser usadas como qualquer outra variável constante.
Você também pode cancelar a definição de uma macro usando a diretiva #undef. Esta é a sintaxe:
#undef MACRONAME
//MACRONAME can no longer be used in the program
Espero que minha resposta tenha sido útil.