预处理器检查数组成员

时间:2013-07-26 17:14:09

标签: c gcc c-preprocessor

这两个数组在源代码中被大量修改,这就是我希望预处理器计算数组中成员数的原因。是否也可以让gcc preprocessor检查 a 数组在 NULL 中结束,数组 b 结束于 0

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

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

1 个答案:

答案 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);

或者那种效果。