Quelle est la différence entre:Différence entre la variable const et le type const variables
const variable = 10;
et
const int variable = 10;
Est-variable selon la norme, s'interprété comme un type intégral lorsque aucun type n'est défini?
Quelle est la différence entre:Différence entre la variable const et le type const variables
const variable = 10;
et
const int variable = 10;
Est-variable selon la norme, s'interprété comme un type intégral lorsque aucun type n'est défini?
const variable = 10
est pas C++ valide, tandis que const int variable = 10;
est.
La seule fois (que je peux penser) que const variable = 10
serait valide est si vous aviez un type nommé variable
et vous avez eu une fonction avec un paramètre sans nom de ce type, en prenant un argument par défaut:
typedef int variable;
void foo(const variable = 10);
Hmm, ça marche! :) –
@Changeling: Utilisez-vous C ou C++? Il y a une différence. –
Je l'ai dans un fichier d'en-tête et il n'y a pas de typedef: 'const MAX_RCV_TIMEOUT_COUNTER = 500/ML_RCV_THREAD_DELAY;' –
Sans règles strictes (K & RC etc. Edition: c'est-à-dire ancien C), int est le type par défaut. Cela ne signifie certainement pas que la variable n'a aucun type, et cela n'a rien à voir avec const.
La question est étiquetée C++. K & R C a (ou du moins devrait avoir) rien à voir avec ça. –
Beaucoup de débutants mélangent C et C++ ... Et, plus sérieusement, l'ancien C++ est basé sur un C plus ancien (celui dont je parle): si son compilateur n'est pas mis à jour, il insère silencieusement int 'entre const et variable. Editer: Apparemment, même dans C99 les implicites sont autorisés ... Mais en C++ il doit être vieux. –
À droite, mais la norme C++ indique que les entrées implicites sont * non * autorisées. Si le compilateur, lors de la construction du code C++, n'émet même pas d'avertissement à ce sujet, quelque chose ne va pas avec le compilateur ou la manière dont il est appelé. –
const variable = 10;
ne compilera pas dans presque tous les nouveaux compilateurs C++ modernes.
Cela signifie que x est implicitement déclaré int. Ceci n'est pas autorisé en C++, mais en C et pour maintenir la compatibilité avec les en-têtes C ou le code pré-ISO C++, beaucoup de compilateurs C++ contemporains supportent encore cela en option.
Mon compilateur GCC 4.4 ici groks "const x = 3;" lorsque feed -fms-extensions sur la ligne de commande (le manuel dit, qu'il allume un couple de lampes qui sont nécessaires pour comprendre le code MFC)
MISE À JOUR: Je l'ai vérifié avec VS-2005, vous pouvez avoir int implicite si vous utilisez
#pragma warning(disable:4430)
ints implicite sont généralement mal vus (au moins par moi en tout cas) –
int @ Paul implicite ne se produit pas dans ce cas. –
@Neil: Je suppose qu'il compile en réalité C plutôt que C++ comme étiqueté (sinon son compilateur est quelque peu cassé) –