C プログラミングの非常識
C++ 使用歴 20 年以上、えのきです。
こんだけ長く使っててもちょいちょい知らない事が出てくるイヤーなプログラミング言語、C++。
以下のコードで、
28 行目に以下のような警告が出ます。Visual C++ 2015。
warning C4930: 'Bar ng(Foo)': プロトタイプされている関数が呼び出されませんでした (変数の定義が意図されていますか?)
コンパイラのバグかと思ったけど、Android 向けの Clang 3.6 でも同様に警告されたので、どうやら言語仕様っぽく。
warning : parentheses were disambiguated as a function declaration [-Wvexing-parse]
警告行が丸々無かった事になるので、後続コードが超謎っぽいコンパイルエラーになりました。29 行目みたいに書くと通っちゃうのが混乱に拍車を掛けて、プチはまり。このやろー。
ていうかなんでこれが関数宣言と見なされるの?と思って試しに 32 行目のように書いてみたら通りやがんのな。こんな変な位置のカッコ、エラーにならないんだ?
なんか仕様上必要なんですかねぇ。20 年以上書いてて一回も使った事ない気がするけどな。
アイキャッチ画像は、学生時代に初めて買った C 言語の解説書。
最初にこんなマニアックな本買ってんじゃねーよ(笑)って思わんでもないけど、教科書みたいなのよりもずっと実践的で解りやすかったと記憶。さすがにもう読み返したりはしてないけど、まだ本棚に並んでます。
プログラミングの話はあんまりブログに書く気無かったけど、たまには書いていこうかなぁ。
以上、長く使ってるだけで別に C++ なんか好きじゃないんだからね!と力説したい、えのきでした。