首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

宏铺展后无法编译

2013-09-14 
宏展开后无法编译定义了一个求数组长度的宏#define ARRAY_LEN(arr) (sizeof(arr) / sizeof(arr[0]))测试

宏展开后无法编译
定义了一个求数组长度的宏

#define ARRAY_LEN(arr) (sizeof(arr) / sizeof(arr[0]));


测试代码

char s1[10];
char s2[20];
strncpy(s1, s2, ARRAY_LEN(s1));


以上代码无法编译通过,但下面这样却可以

char s1[10];
char s2[20];
size_t len = ARRAY_LEN(s1);
strncpy(s1, s2, len);


请问为什么呢?
[解决办法]
Define的行末多了个分号
[解决办法]
后面的 ; 不要
#define ARRAY_LEN(arr) (sizeof(arr) / sizeof(arr[0]))

热点排行