當數組爲空時,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