我想获取 VA_ARGS
的长度我使用了这个问题的答案https://stackoverflow.com/a/2124433/7388699,但如果不起作用!
#define PIN_ARRAY_LENGTH(...) ((size_t)(sizeof((int[]){__VA_ARGS__})/sizeof(int)))
size_t c = PIN_ARRAY_LENGTH(1, 5, 7, 9);
我也尝试过
size_t x = sizeof((int[]){ 1, 6, 8 }) / sizeof(int);
它无法编译,但出现错误:强制转换为不完整的数组类型“ int []”
答案 0 :(得分:1)
不可能使用复合文字,但是您可以通过typedef创建所需的数组右值:
using int_c_array = int[];
#define count_args(...) \
(sizeof(int_c_array {__VA_ARGS__}) / sizeof(int))
答案 1 :(得分:1)