我知道C 中 putc() 的宏实现,但在 C++ 中是否相同?
3 回答
这将取决于您对cstdio
. 在大多数情况下,这实际上只是一个包装器,在命名空间stdio.h
内声明包装器,并且和编译器共享相同的函数标准库。例如,VS2010 使用for ,其中既可以作为宏也可以作为函数实现,具体取决于环境和其他编译时定义。std
C
C++
C
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 后缀。
如果您对特定的编译器感兴趣,请查看 cstdio.h。
但是,如果我们深入研究一下 ISO C 标准:“ISO/IEC 9899:1990”(C89/C90),我们发现它无法在网络上免费查看(甚至最终草案都没有)标准),所以转到 C99(不是 ISO C),你会发现......
...C99(不是“ISO C”)说 putc() 可以实现为宏,
因此,如果您真的在使用 Obj-C++(使用 C99)进行开发,那么 C99 是要考虑的相关规范,而不是ISO C(C90)。此外,由于 C99 让编译器编写者决定是否将 putc() 设为宏,因此您应该将其视为一种开放的可能性,并决定您是否真的关心正在过时的 C90 (ISO C) 规范(现在甚至 C11 (2011) 都出局了。)
是的。<stdio.h>
在我知道的所有实现中,C 和 C++ 都使用了相同的方案。