我知道Macro implementation of putc() in C,但在C ++中是否相同?
答案 0 :(得分:3)
这取决于您cstdio
的实施情况。在大多数情况下,这实际上只是stdio.h
的包装器,在std
命名空间内声明了包装器,C
和C++
编译器共享C
和stdio.h
编译器的相同标准库1}}功能。例如,VS2010对C++
使用putc
,其中{{1}}实现为宏和一个函数,具体取决于环境和其他编译时定义
答案 1 :(得分:2)
哪个版本的C ++? C ++ 83(1983)? C ++ 98(1998)? C ++ 11(2011)?
C ++ 98和C ++ 11规范依赖于C库函数的ISO C规范,并且不对它们施加额外的实现约束,除了将stdio.h重命名为cstdio.h并允许包含没有dot-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)也出局了。)
答案 2 :(得分:1)
是的。 C和C ++都使用<stdio.h>
,它在我所知道的所有实现中具有相同的方案。