Muh*_*edy 4 c enums objective-c
SA,我所知道的是Objective-C是C的严格超集.
但是当我尝试了一个非常简单的枚举示例时,我曾经在C中使用它,它在目标C中不起作用,
这是代码:
#import <Foundation/Foundation.h>
int main(void)
{
typedef enum
{
SUN, MON, TUES
}DAYS;
DAYS d = MON;
NSLog(@"%@", d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
#include <stdio.h>
int main(void)
{
typedef enum
{
SUN, MON, TUES
}DAYS;
DAYS d = MON;
printf("%d\n", d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在C中,它完美地工作,但是在objective-c(我在WIN上使用GNUstep)它在执行时崩溃(没有编译时错误)
谁能告诉我为什么?
Joe*_*Joe 17
%@是一个对象说明符,枚举是一个int(有符号或无符号).要在Objective-C中打印枚举,您需要%d在您的NSLog.
NSLog(@"%d", d);
Run Code Online (Sandbox Code Playgroud)
您的原始示例崩溃,因为它期望d是一个对象,因此它会尝试将description消息发送到驻留在内存地址1(值MON)的对象.
| 归档时间: |
|
| 查看次数: |
5531 次 |
| 最近记录: |