Sam*_*Sam 81 c arrays static const objective-c
我想创建一个在我的Objective-C实现文件中使用的常量静态数组,类似于我的".m"文件的顶层.
static const int NUM_TYPES = 4;
static int types[NUM_TYPES] = {
1,
2,
3,
4 };
Run Code Online (Sandbox Code Playgroud)
我打算NUM_TYPES
稍后在文件中使用,所以我想把它放在一个变量中.
但是,当我这样做时,我得到了错误
"在文件范围内修改了'类型'"
我认为这可能与数组大小是变量有关(当我在那里放一个整数文字时,我不会收到此消息static int types[4]
).
我想解决这个问题,但也许我说这一切都错了......我在这里有两个目标:
NUM_TYPES
到变量中,所以我的文件中的不同位置没有相同的文字有什么建议?
[编辑]在C Faq中找到了这个:http://c-faq.com/ansi/constasconst.html
lar*_*rsr 60
这种警告的原因是c中的const并不意味着常数.这意味着"只读". 因此,该值存储在内存地址中,可能会被机器代码更改.
caf*_*caf 32
如果您打算使用预处理器,根据其他答案,那么您可以让编译器NUM_TYPES
自动确定值:
#define NUM_TYPES (sizeof types / sizeof types[0])
static int types[] = {
1,
2,
3,
4 };
Run Code Online (Sandbox Code Playgroud)
小智 11
也可以使用枚举.
typedef enum {
typeNo1 = 1,
typeNo2,
typeNo3,
typeNo4,
NumOfTypes = typeNo4
} TypeOfSomething;
Run Code Online (Sandbox Code Playgroud)
正如其他答案中已经解释的那样,const
在 C 中仅意味着变量是只读的。它仍然是一个运行时值。但是,您可以将 anenum
用作 C 中的实常数:
enum { NUM_TYPES = 4 };
static int types[NUM_TYPES] = {
1, 2, 3, 4
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
108789 次 |
最近记录: |