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 を使用) で開発している場合は、ISO C (C90)ではなく、C99 を考慮する必要があります。また、C99 ではコンパイラの作成者が putc() をマクロにするかどうかを決定できるため、これは未解決の可能性であると考えて、時代遅れになりつつある C90 (ISO C) 仕様について本当に知りたいかどうかを判断する必要があります (現在はC11 (2011) も出ています。)
はい、そうです。C と C++ の両方<stdio.h>
が、私が知っているすべての実装で同じスキームを使用しています。