D'après ce que je comprends, #define x y
et const int x = y;
devraient fonctionner de manière identique sous le compilateur Visual Studio, mais const int x = y;
est la méthode préférée.Problème avec const vs #define dans Visual Studio
Le code C je ressemble à ceci:
static const int x = 100000;
void SomeFunction(...)
{
volatile static int y = x;
...
}
Le problème est ici avec la déclaration de y. Si j'utilise un #define
pour x, alors il n'y a pas de problèmes, mais l'utilisation du code ci-dessus entraîne le retour du compilateur avec "l'erreur c2099: l'initialiseur n'est pas une constante". J'essaye de compiler à partir de la ligne de commande, et je n'utilise pas d'indicateurs de compilation, donc je ne suis pas sûr de devoir définir un drapeau pour que le compilateur optimise la const - ou si je suis tombé sur une sorte de cas particulier.
Compiler le programme en tant que programme C++ fonctionne également, mais je préfère éviter cela, si possible.
Notez que lorsque vous utilisez #define, x n'est pas explicitement typé ... –
Votre exemple compile bien pour moi. – zdan
La compilez-vous en tant que fichier .c et non en tant que fichier .cpp? – Swiss