宏展开后无法编译
定义了一个求数组长度的宏
#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]))