ple*_*ndo 4 c++ stdio language-lawyer
在 fputc()/putc() 上阅读en.cppreference.com,我偶然发现了以下语句:
在 C 中,putc() 可以作为宏实现,这在 C++ 中是不允许的。
这是真的?如果是这样,这是在哪里(在 C++ 标准中)说明的?
putc 在 C 标准中被指定为一个函数:
7.19.7.8 putc 函数
C 标准允许将任何 C 标准库函数实现为宏(仍然需要提供真正的函数实现,但如果在头文件中定义了宏,则将使用该宏):
7.1.4 库函数的使用
头文件中声明的任何函数都可以额外实现为类似函数的宏
但是 C++ 标准明确指出这些必须定义为函数:
17.4.1.2.6 标题
在 C 中定义为函数的名称应在 C++ 标准库中定义为函数。
脚注明确说明不允许额外的宏定义:
这不允许在 C 中允许的实践,除了提供函数原型之外,还提供“屏蔽宏”。在 C++ 中实现等效的“内联”行为的唯一方法是提供一个作为 extern inlin 的定义
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |