这两个数组在源代码中被大量修改,这就是我希望预处理器计算数组中成员数的原因。是否也可以让gcc
preprocessor
检查 a 数组在 NULL 中结束,数组 b 结束于 0
static const char *a[] = { "string1", "string2", NULL };
static const int b[] = { 10, 20, 0 };
答案 0 :(得分: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);
或者那种效果。