2012-02-20 15 views
8

修飾子と修飾子の違いを知りたいと思います。いくつかの本は、volatileが修飾語であると示唆しており、他の本はそれを修飾子と見なしている。Cの修飾子と修飾子の違いは何ですか?

それで、変数に関して正確に修飾語と修飾語は何ですか?

+0

ボーナスに関する質問:ここで「宣言指定子」はどこに当てはまりますか? – Kos

+1

@Kos: "宣言指定子"はより一般的なカテゴリです。実際には、C文法に特異な "宣言指定子"はありませんが、 "宣言指定子"は記憶域クラス指定子( 'typedef'、' static''、 'extern'、' auto'、 'register' )、型修飾子( 'const'、' restrict'、 'volatile')、関数指定子(' 'inline'')、型定義名(実際に定義されているものが何であるか)を入力します。 –

+0

本の著者に尋ねると、彼らは青から "修飾語"という言葉を作りました。そのような用語はありません。 – Lundin

答えて

6

volatileは、修飾子です。

const,restrict,volatileおよびC11 _Atomicは、C型修飾語である。

オブジェクトを宣言するとき、Cの用語では修飾子という単語は使用されません。

+0

あなたのストレージクラスは何ですか?彼らも修飾子の下に来ますか? –

+0

'static'と' extern'は記憶クラス指定子であり、修飾子ではありません。 1つの違いは、定義でのみ使用され、修飾子は宣言で使用できることです。 – ugoren

+0

@ugoren:しかし構文にはそのような区別はありません。標準状態のいろいろな部分が、ストレージクラス指定子を持つオブジェクト宣言が、定義、一方通行、またはその他のものであることは殆どです(自動であるか、仮定義か、あるいは外部定義か、私が考えていない他の種類の定義)。 –