关于 #ifndef 和 macro_function
about #ifndef and macro_function
我已经将编译器从 msvc 更改为 mingw,
宏函数:_countof
未包含在 mingw 或
中
#define _countof(array) (sizeof(array) / sizeof(array[0]))
也许它只适用于 msvc,
所以,我必须自己将定义添加到头文件中,
我不确定下面的代码:
#ifndef _countof(array)
#define _countof(array) (sizeof(array) / sizeof(array[0]))
#endif
看来这种写法并不常见
下划线前缀表示它是专有的而不是 ISO 标准名称。
在#ifndef
中测试的是宏name,所以只是:
#ifndef _countof
#define _countof(array) (sizeof(array) / sizeof(array[0]))
#endif
虽然我个人更喜欢:
#if !defined _countof
#define _countof(array) (sizeof(array) / sizeof(*array))
#endif
宏也只是宏。没有 宏函数 这样的东西,你可以参考 类似函数的宏 ,它是一个接受参数的宏,但即使然后在语义上它们与函数非常不同。
我已经将编译器从 msvc 更改为 mingw,
宏函数:_countof
未包含在 mingw
#define _countof(array) (sizeof(array) / sizeof(array[0]))
也许它只适用于 msvc,
所以,我必须自己将定义添加到头文件中,
我不确定下面的代码:
#ifndef _countof(array)
#define _countof(array) (sizeof(array) / sizeof(array[0]))
#endif
看来这种写法并不常见
下划线前缀表示它是专有的而不是 ISO 标准名称。
在#ifndef
中测试的是宏name,所以只是:
#ifndef _countof
#define _countof(array) (sizeof(array) / sizeof(array[0]))
#endif
虽然我个人更喜欢:
#if !defined _countof
#define _countof(array) (sizeof(array) / sizeof(*array))
#endif
宏也只是宏。没有 宏函数 这样的东西,你可以参考 类似函数的宏 ,它是一个接受参数的宏,但即使然后在语义上它们与函数非常不同。