0

这两个数组在源代码中被修改了很多,这就是为什么我希望预处理器计算数组中的成员数。是否也可以gcc preprocessor检查数组aNULL结尾,数组b0结尾?

static const char *a[] = { "string1", "string2", NULL };

static const int b[] = { 10, 20, 0 };
4

1 回答 1

2

预处理器可以为您做一些事情,但与您描述的不完全一样。您可以使用宏确定数组中的元素数量:

#define COUNTOF(arr)  (sizeof(arr) / sizeof(*(arr)))

然后在函数的某个地方,您可以使用 assert() 来测试值:

#include <assert.h>
...
... in some function
...

assert(a[COUNTOF(a) - 1] == NULL);
assert(b[COUNTOF(b) - 1] == 0);

或类似的东西。

于 2013-07-26T17:35:09.780 回答