arrays - 关于#ifndef 和macro_function
问题描述
我已将编译器从 msvc 更改为 mingw,
宏功能:_countof
未包含在 mingw <stblib.h> 或 <stdio.h> 中
#define _countof(array) (sizeof(array) / sizeof(array[0]))
也许它只适用于 msvc,
所以,我必须自己将定义添加到头文件中,
我不确定下面的代码:
#ifndef _countof(array)
#define _countof(array) (sizeof(array) / sizeof(array[0]))
#endif
看来这种写法并不常见。
解决方案
下划线前缀表示它是专有的而不是 ISO 标准名称。
它是在中测试的宏名称#ifndef
,所以只需:
#ifndef _countof
#define _countof(array) (sizeof(array) / sizeof(array[0]))
#endif
虽然我个人更喜欢:
#if !defined _countof
#define _countof(array) (sizeof(array) / sizeof(*array))
#endif
宏也只是一个宏。没有宏函数之类的东西,而是您可能会指代类似函数的宏,它是一个接受参数的宏,但即使如此,它们在语义上也与函数非常不同。
推荐阅读
- solr - 调整 DIH Apache Solr
- android - Android Studio 不显示带有 Flutter 的 Logcat
- sql-server - 什么是数字的最佳数据
- linux - 如何在 linux 环境下安装 pyhs2?
- c - 从文件中读取内容时出现分段错误
- mysql - 如何将行转换为 MySQL 中的列?
- javascript - 我想用 javascript 创建一个图像滑块
- python - Moviepy - 带有 TextClip 的 CompositeVideoClip 错误
- vba - 将 PostMessage WM_KEYDOWN/UP 发送到记事本编辑控件适用于 VK_F5,但不适用于普通字母
- python - 图像相似度的连体网络