Cette approche ne fonctionne probablement pas partout. Comme il y a une substitution en cours où la VALEUR à droite est indéfinie.
Et c'est mal de changer la macro-substitution de quelqu'un d'autre. D'autant plus s'il s'agit de macros d'environnement prédéfinies. Peu importe l'endroit où se trouvera la macro prioritaire à la fin, une fois que tous les fichiers du projet seront assemblés. Il est préférable de définir votre propre macro _VALUE.
Vladimir Simakov: Et c'est mal de changer la macro-substitution de quelqu'un d'autre. Surtout s'il s'agit de macros d'environnement prédéfinies. Peu importe où, à la fin, une fois que tous les fichiers du projet sont assemblés, la surcharge de la macro apparaîtra. Vous feriez mieux de définir votre propre macro _VALUE.
Puis-je vous demander pourquoi vous ne pouvez pas utiliser l'affectation d'une valeur VALUE à une variable globale, puis la multiplier et la substituer dans la définition finale ?
Valeriy Yastremskiy: Puis-je vous demander pourquoi vous ne pouvez pas utiliser une affectation VALUE à une variable globale, la multiplier et la substituer dans la définition finale ?
Vous pouvez le faire, mais alors le sens de la substitution de macro est perdu (substituer des valeurs dans le code). Tout espoir repose sur le compilateur, qui convertit le type const (avez-vous, par ailleurs, défini le type de la variable ?) en type constexpr c++.
Mais sinon, oui, vous pouvez.
#ifdef MACROS
const int gValue=2*VALUE;
#undef VALUE
#define VALUE gValue
#endif
Cette approche ne fonctionne probablement pas partout. Comme il y a une telle substitution en cours, où la VALEUR à droite n'est pas définie.
Apparemment, je ne comprends pas du tout comment fonctionne le compilateur. J'ai imaginé que les chaînes de caractères sont analysées séquentiellement. Il n'y a donc pas de valeur indéfinie à droite :
#define VALUE 10// VALUE = 10#define TMP VALUE // TMP = 10#undef VALUE // VALUE = EMPTY#define VALUE (TMP*2) // TMP = 10, следовательно VALUE = 20
Apparemment, je ne comprends pas du tout comment fonctionne le compilateur. J'ai imaginé que les cordes sont analysées de manière séquentielle. Il n'y a donc pas de valeur indéfinie à droite :
Fonctionne de haut en bas comme le remplacement de texte. C'est-à-dire que "TMP" sera remplacé par "VALUE".
Apparemment, je ne comprends pas du tout comment fonctionne le compilateur. J'ai imaginé que les cordes sont analysées de manière séquentielle. Il n'y a donc pas de valeur indéfinie à droite :
Ce n'est pas le compilateur - c'est le préprocesseur)
Cette approche ne fonctionne probablement pas partout. Comme il y a une substitution en cours où la VALEUR à droite est indéfinie.
Oui, et c'est mal de changer la macro-substitution de quelqu'un d'autre.
Sans ce mal, ça ne serait pas arrivé.
Et c'est mal de changer la macro-substitution de quelqu'un d'autre. Surtout s'il s'agit de macros d'environnement prédéfinies. Peu importe où, à la fin, une fois que tous les fichiers du projet sont assemblés, la surcharge de la macro apparaîtra. Vous feriez mieux de définir votre propre macro _VALUE.
Puis-je vous demander pourquoi vous ne pouvez pas utiliser une affectation VALUE à une variable globale, la multiplier et la substituer dans la définition finale ?
Vous pouvez le faire, mais alors le sens de la substitution de macro est perdu (substituer des valeurs dans le code). Tout espoir repose sur le compilateur, qui convertit le type const (avez-vous, par ailleurs, défini le type de la variable ?) en type constexpr c++.
Mais sinon, oui, vous pouvez.
Mais alors, oui, vous pouvez.
Ça ne marchera pas avec ça.
Ça ne marchera pas avec celui-là.
Cette approche ne fonctionne probablement pas partout. Comme il y a une telle substitution en cours, où la VALEUR à droite n'est pas définie.
Apparemment, je ne comprends pas du tout comment fonctionne le compilateur. J'ai imaginé que les chaînes de caractères sont analysées séquentiellement. Il n'y a donc pas de valeur indéfinie à droite :
Apparemment, je ne comprends pas du tout comment fonctionne le compilateur. J'ai imaginé que les cordes sont analysées de manière séquentielle. Il n'y a donc pas de valeur indéfinie à droite :
Fonctionne de haut en bas comme le remplacement de texte. C'est-à-dire que "TMP" sera remplacé par "VALUE".
Apparemment, je ne comprends pas du tout comment fonctionne le compilateur. J'ai imaginé que les cordes sont analysées de manière séquentielle. Il n'y a donc pas de valeur indéfinie à droite :
Ce n'est pas le compilateur - c'est le préprocesseur)
se transforme en
et votre VALEUR est indéfinie.
Il n'est pas possible de créer un nouveau produit pour le marché, le message d'erreur 500 s'affiche.
Le produit a été créé et vérifié, il est indiqué qu'il a été publié, mais lorsque vous cliquez sur le lien, vous obtenez une réponse de 500.