#define A = 123;
cela est un "symbolic name" pour nous, mais pour "compiler" ne peut pas le voir, parce que, avant de le transmettre au compiler, "source code" changer de "A" a "123".
en conclure, A n'est pas au "symbol table" pour complier!!
donc, par example...
#define A 123
int main(void)
{
int = A; // compile error
return (0);
}
main.cpp:7:7: error: expected unqualified-id
int = 123;
^
1 error generated.
donc, pour "compile error", on peut voir que "int = 123"...
pas de "int = A";
mais, fait attention pour mettre "const"
par example,
pour " char * A = "aa"; "
on doit mettre "const" comme la suivante:
const char * const A = "aa";
ca veut dire, mettre "const" pour "pointer" et "valeur".
en plus, mieux que celui ci,
on peut utiliser " const std::string A ("aa"); "
parceque,
1. A est dans "symbol table"
2. "Utilisation de const" a besoin qu'un origianal
( #define a besoin de chaque copie quand il apparaît)