微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于#ifndef 和 macro_function

如何解决关于#ifndef 和 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

另外一个宏就是一个宏。没有宏函数这样的东西,而你可能指的是一个类似函数的宏,它是一个接受参数的宏,但即使如此,它们在语义上也是非常不同的来自函数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。