「型宣言子」についてコラム
脱線的コラム事項
宣言子の使い方 : 宣言の構文
コンパイルするときに出る、宣言の構文エラーとは、(型)宣言子の使い方が間違っていることです。 使い方とはつまり、 int なら、int i ; とか、int i = 0 ; とか、int を使うときは、宣言子としての 構文が決まっています。int 0 ; では、「リテラルな数字※」 が int の次に来てはいけないので、構文違反となり、エラーです。int i #... とかとなっていてももちろんです (# がいけない)。そんな間違いをおかす人はいないとしても、「;」 を忘れたりすると・・・・・、よくあることです。
※ リテラル(な数字) とかいう使い慣れない言葉をたまに見かけることがあります。プログラム中に直接書かれている具体的な 「数(数値)」 のことです。if( i == 5 ) ... なら、5 は"リテラル"な表記です。i などといった 変数(名) ( 識別子 : Identifier) とは対照的ですね。同じ数字(データ) を表すもの、という意味では、「
リテラル」と「識別子」は対義的です。更に、C 言語で書かれたプログラムコードの要素を分類していくと、とどのつまり、「リテラル(定数)」 「識別子(名前)」 「予約語」 「演算子」 「区切り(空白も含めて)」 「特別な記号及びコメント( # とか// とか /*。)」 です ( 独断 : 分析的に分類を試みる視点と、コンパイラ作成側、構成する側の視点の2とおりありますが、無理に分析していこうとするよりも、後者のほうが素直です)。でも 「リテラル」 なんて、結構どうでもいい言葉です。宣言の構文に関しては、さほど込み入った文法事項があると考える必要もないと思います。実際には、int i ; のような一番単純な宣言が圧倒的に多いでしょう。
すこし話は飛んで、"構造体"の宣言(使用の宣言) では、
RECT rect = { 0, 0, 100, 75 } ;
のような文法が可能です(初期化)。便利です。覚えておきましょう。
2段階を踏んで、
RECT rect ;
rect = { 0, 0, 100, 75 } ;// コンパイラ次第ではできるかもしれませんが、これはアウト
のようにはできません。・・・だから「宣言の構文」 としてここで紹介したのです。
〜予約語〜
(型)宣言子 : Declarator や、(型)修飾子 : Modifier。
int や、unsigned のことを言っていますが、これらは C言語の 「
予約語 」 の仲間です。この「予約語」 という言葉は、コンパイラ作成側、あるいはコンパイル技術の観点から眺めるとよりクリアーです。逆に、だからこそ、格式ばって聞こえます。C言語における文法上の 「キーワード」 とも呼ぶこともできます。※ 関数は予約語とは呼べません。「識別子」 にあたるでしょう。 C 言語で、この手の 「キーワード」 っていったいどれだけあるのか、といったら、それらは C の 「予約語」 という一言で、包括的に カタ がつきます。C++ にももちろん、C++ の予約語、があります。いわずとも、これら 「言語」 を成り立たしめているものです。実際にプログラムを組む場合には、このほかの要素としては、「文法 : 書き方 」、「関数 : C の標準関数」 といった具合に整理できるでしょう (覚えるべきこと※、というか、または、使っていたら覚えることになってしまった、こと)。
※ 構えることはナンセンス
[トップ] [インデックス] [前へ(型宣言子)] [戻る]