我已经把编者从msvc变成了密友,
宏功能:_countof不包含在或中
#define _countof(array) (sizeof(array) / sizeof(array[0]))也许只是为了msvc,
所以,我必须自己把定义添加到头文件中,
我不确定下面的代码:
#ifndef _countof(array)
#define _countof(array) (sizeof(array) / sizeof(array[0]))
#endif这种写作方式似乎并不常见。
发布于 2021-06-28 17:28:46
下划线前缀表示它是专有的,而不是ISO标准名称。
它是在#ifndef中测试的宏名,所以只需:
#ifndef _countof
#define _countof(array) (sizeof(array) / sizeof(array[0]))
#endif但就我个人而言,我更喜欢:
#if !defined _countof
#define _countof(array) (sizeof(array) / sizeof(*array))
#endif而且宏也只是一个宏。没有宏函数这样的东西,相反,您可以引用一个类似函数的宏,它是一个接受参数的宏,但是即使在语义上它们也与函数有很大的不同。
https://stackoverflow.com/questions/68166725
复制相似问题