2017-09-11 9 views
1

私はsal.hヘッダーをcに見ていて、$がプロシージャのパラメータでよく使用されることがわかりました。これは何ですか? AFAIK、Cには許可されていません。例えば

(MS C/C++コンパイラから\ sal.h含む)

171 #define _Pre_z_   _Pre2_impl_(_$notnull, _$zterm) 
+0

コンパイラとは何ですか? – axiac

+0

どのコンパイラ?実装に依存するかもしれません.. –

+0

@axiac 'c'コンパイラは文句を言っていません。これは私の好奇心です、なぜそれが不平を言わないのですか? –

答えて

0

C標準は、識別子は、文字、数字、および下線を含むことができることを指定します。それでおしまい。コンパイラ(GCCなど)の中には、ドル記号の使用を許可するものもありますが、標準外で実行しているので、この機能を使用するとプログラムが移植できなくなります。

+0

このドル記号は私のために問題です。あなたは何か回避策を提案できますか?私は第三者のコンパイラでcヘッダをコンパイルしようとしており、それを認識しません。私が何か他のもので$記号を変えるだけかもしれませんか?どう思いますか? –

+0

おそらく、このコードは移植可能ではないかもしれません。確かに、識別子を変更するとコンパイルできますが、他のGCC固有のものや他の移植不可能なものがあるかもしれません。 –

関連する問題