putc 作为宏观 ic C++实现

putc implemented as Macro ic C++?

本文关键字:C++ 实现 ic 宏观 putc      更新时间:2023-10-16

我知道 C 语言中 putc(( 的宏实现,但在C++中是一样的吗?

这取决于

您对cstdio的实现。在大多数情况下,这实际上只是围绕stdio.h的包装器,包装器在std命名空间内声明,并且CC++编译器共享相同的标准库用于C函数。例如,VS2010 使用 stdio.h 表示C++,其中putc作为宏函数实现,具体取决于环境和其他编译时定义。

哪个

版本的C++? C++83 (1983(? C++98 (1998(? C++11 (2011(?

C++98 和 C++11 规范依赖于 C 库函数的 ISO C 规范,除了将 stdio.h 重命名为 cstdio.h 并允许包含不带点 h 后缀之类的琐碎规范外,不会对它们施加额外的实现约束。

请参阅: C++98 规范

请参阅: C++11 规范

如果你对你的特定编译器感兴趣,请查看cstdio.h。

但是,如果我们深入挖掘并查看ISO C标准:"ISO/IEC 9899:1990"(C89/C90(,那么,我们发现它无法在网络上免费查看(甚至不是最终的标准草案(,因此继续使用C99(不是ISO C(,您会发现...

。C99(不是"ISO C"(说putc((可以作为一个宏实现,

参见: C99 规格

因此,如果您真的在 Obj-C++(使用 C99(中开发,那么 C99 是要考虑的相关规范,而不是 ISO C (C90(。 此外,由于 C99 允许编译器编写者决定是否将 putc(( 作为宏,您应该将其视为一种开放的可能性,并决定您是否真的关心了解正在过时的 C90 (ISO C( 规范(现在甚至 C11 (2011( 也已经过时了。

是的。 C 和 C++ 都使用 <stdio.h> 在我所知道的所有实现中具有相同方案。