当前位置:  开发笔记 > IOS > 正文

整数常量'不会减少为整数'

如何解决《整数常量'不会减少为整数'》经验,为你挑选了2个好方法。

我用这段代码设置我的常量

// Constants.h
extern NSInteger const KNameIndex;

// Constants.m
NSInteger const KNameIndex = 0;

在导入Constant.h文件的文件中的switch语句中,我有:

switch (self.sectionFromParentTable) {
    case KNameIndex:
        self.types = self.facilityTypes;
        break;
    ...

我在编译时遇到错误:"错误:case标签不会减少为整数常量"

什么想法可能搞砸了?



1> epatel..:

对于C/C++和Objective-C,case语句必须具有固定值 - 在编译时"缩减为整数(读取值) "

你的常量不是一个真正的"常量",因为它是一个变量,我想它可以通过指针改变 - 即 &KNameIndex

通常将常量定义为 enum

enum {
    KNameIndex = 0,
    kAnotherConstant = 42
};

如果您使用C++或Objective-C++(.mm作为文件扩展名),您可以使用const语句作为

const int KNameIndex = 0;



2> 小智..:

您可以使用

#define KNameIndex 0

...

switch (self.sectionFromParentTable) {
        case KNameIndex:
                self.types = self.facilityTypes;
                break;
        ...

它应该工作.

刚遇到同样的问题,我决定选择#define而不是enum.为我工作™;-)

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有