constante entière de "ne pas réduire à un nombre entier'
J'utilise ce code pour configurer mon constantes
//Constants.h
extern NSInteger const KNameIndex;
//Constants.m
NSInteger const KNameIndex = 0;
Et dans une instruction switch à l'intérieur d'un fichier des importations de la Constante.h fichier j'ai ceci:
switch (self.sectionFromParentTable) {
case KNameIndex:
self.types = self.facilityTypes;
break;
...
J'obtiens l'erreur lors de la compilation que de lire ceci: "erreur:le cas de l'étiquette n'est pas réduit à une constante entière"
Les idées de ce que pourrait être foiré?
Vous devez vous connecter pour publier un commentaire.
Pour le C/C++ et Objective-C le cas énoncé de valeurs fixes réduits à un nombre entier (valeur lue)" au moment de la compilation
Votre constantes n'est pas un vrai "constante" parce que c'est une variable, et j'imagine qu'il peut être modifié par le biais d'un pointeur - ie
&KNameIndex
Habituellement, on définit des constantes comme
enum
Si vous souhaitez utiliser le C++ ou Objective-C++ (avec .mm comme l'extension de fichier), vous pouvez utiliser une instruction const que
Vous pouvez utiliser
et cela devrait fonctionner.
Juste eu le même problème et j'ai décidé d'aller avec #define plutôt que d'enum. Fonctionne pour moi™ 😉
Je n'ai pas travaillé avec Objective-C, mais j'essaierais de serrage de la 'extern'. Au moins si c'était le C++, l'
Constants.m
fichier ne ferait pas partie de l'unité de compilation deOther.m
, de sorte que la valeur deKNameIndex
serait inconnue pour le compilateur. Ce qui expliquerait l'erreur; l'inconnaissable valeur ne peut pas être une constante.Ne mettre que de la définition, non seulement la déclaration, dans le
Constants.h
fichier d'aide?C'est un coup de poignard dans le noir parce que je n'ai pas utilisé de Cacao /ObjC dans un long moment maintenant, mais c'est la variable de membre sectionFromParentTable pas de type int?
Je pense que vous êtes coincé avec l'aide d'un
const int
au lieu d'unconst NSInteger
que l'interrupteur ne fonctionne qu'avec construit dans les types intégraux. (pas sûr de la syntaxe avec const retournée autour après le type).Prendre un coup d'oeil à la question connexe: Objective-C commutateur à l'aide d'objets?