当数组为空时,ARRAY_SIZE是否返回未定义的行为?因为我们做了一个未知的分区sizeof((X)[0])
当数组为空时,ARRAY_SIZE是否返回未定义的行为?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(X) sizeof((X))/sizeof((X)[0])
#endif
struct ka {
int a;
int b;
};
int main(void)
{
struct ka k[] = {};
printf("%d\n", ARRAY_SIZE(k));
}
这不是C++。对于未指定的数组,空数组初始化器被禁止 – mpiatek
由于'sizeof(k [0])'实际上不访问任何内存,所以这不是UB。它与'sizeof(ka)' – rustyx