读书人

宏铺展后无法编译

发布时间: 2013-09-14 13:03:22 作者: rapoo

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

#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]))

读书人网 >C++

热点推荐