首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于#ifndef和macro_function

关于#ifndef和macro_function
EN

Stack Overflow用户
提问于 2021-06-28 16:12:51
回答 1查看 79关注 0票数 0

我已经把编者从msvc变成了密友,

宏功能:_countof不包含在或中

代码语言:javascript
复制
#define _countof(array) (sizeof(array) / sizeof(array[0]))

也许只是为了msvc,

所以,我必须自己把定义添加到头文件中,

我不确定下面的代码:

代码语言:javascript
复制
#ifndef _countof(array)
#define _countof(array) (sizeof(array) / sizeof(array[0]))
#endif

这种写作方式似乎并不常见。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-28 17:28:46

下划线前缀表示它是专有的,而不是ISO标准名称。

它是在#ifndef中测试的宏名,所以只需:

代码语言:javascript
复制
#ifndef _countof
    #define _countof(array) (sizeof(array) / sizeof(array[0]))
#endif

但就我个人而言,我更喜欢:

代码语言:javascript
复制
#if !defined _countof
    #define _countof(array) (sizeof(array) / sizeof(*array))
#endif

而且宏也只是一个宏。没有宏函数这样的东西,相反,您可以引用一个类似函数的宏,它是一个接受参数的宏,但是即使在语义上它们也与函数有很大的不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68166725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档