3

信頼できる 2 つの情報源を参照しましたが、どちらも同じことに対して異なる定義を持っているようです。

http://www.cplusplus.com/reference/clibr%E2%80%A6

http://www.ocf.berkeley.edu/~pad/tigcc/doc/html/stdio_fputchar.html

最初のソースはputchar()関数であると述べていますがgetchar()、2番目のリンクではputchar()マクロであると述べています。私の本はgetchar()マクロだと言っています。どちらが正しい?

4

3 に答える 3

6

getcharおよびputcharは関数ですが、追加でマクロとして定義することもできます。それらがそうであるかどうかは、実装に依存します。C 標準は、標準ライブラリ関数 (C99、7.1.4@1) に関して次のように述べています。

ヘッダーで宣言された関数は、ヘッダーで定義された関数のようなマクロとして追加で実装できます。

于 2013-04-23T09:35:25.737 に答える
1

詳細については、私のMacで「man getchar」を実行すると、次のようになります。

 The fgetc() function obtains the next input character (if present) from the stream pointed at by stream, or the
 next character pushed back on the stream via ungetc(3).

 The getc() function acts essentially identically to fgetc(), but is a macro that expands in-line.

 The getchar() function is equivalent to getc(stdin).
于 2013-04-23T09:31:44.747 に答える
0

コンパイラでの実装方法に完全に依存します。

于 2013-04-23T09:33:59.183 に答える