putc实现为Macro ic C ++?

时间:2012-05-23 01:42:19

标签: c++ macros

我知道Macro implementation of putc() in C,但在C ++中是否相同?

3 个答案:

答案 0 :(得分:3)

这取决于您cstdio的实施情况。在大多数情况下,这实际上只是stdio.h的包装器,在std命名空间内声明了包装器,CC++编译器共享Cstdio.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后缀。

See: C++98 Specification

See: C++11 Specification

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

但是,如果我们深入挖掘并查看ISO C标准:“ISO / IEC 9899:1990”(C89 / C90),我们发现它无法在网上免费查看(甚至没有最终草案标准),所以转到C99(非ISO C),你会发现......

... C99(非“ISO C”)说putc()可以实现为宏,

See: C99 Specification

因此,如果你真的在Obj-C ++(使用C99)中进行开发,那么C99是需要考虑的相关规范,不是 ISO C(C90)。此外,由于C99允许编译器编写者决定是否将putc()作为一个宏,你应该认为它是一个开放的可能性,并决定你是否真的想知道已经过时的C90(ISO C)规范(现在甚至C11(2011)也出局了。)

答案 2 :(得分:1)

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