やはり、CとC++の区別がつかない人は少なくないようだ

教えて!gooで「C言語での質問です。」というQ&Aを見て感じたのですが、CとC++の区別がついていない人が少なくないことを改めて認識しました。No.3の回答がそれです。

>char str[3] = "AAA"; は 間違いですね コンパイルしたら エラーがでました。

このように指摘しているわけですが、このコードをCコンパイラでコンパイルしてエラーが出るとすれば、そのコンパイラが非標準処理系であるか、不具合があるかのどちらかです。「C++プログラマのためのC言語入門」の「第9回 文字定数と文字列リテラル」でも解説しましたが、char型の配列を文字列リテラルで初期化する場合、ナル文字分の要素が足りなくても問題なくコンパイルできます。

かなり細かい部分の仕様ですので、これを知らないこと自体はしかたがありません。しかし、問題は、(質問のタイトルとしてはふさわしくありませんが)「C言語での質問です。」と明記されているにもかかわらず、C++としてコンパイルした上で、「エラーがでました」と指摘している点にあります。

勘違いしていただきたくないのですが、今回はこの回答者を個人攻撃しているわけではありません。実際、このような事実誤認は頻繁に見受けられます。ですので、今回はたまたま具体例として挙げさせていただきましたが、決して特定の誰かの問題ということではないのです。ただ、今回の件を「C/C++迷信集」に入れなかったのは、やはり名指しの引用を含んでいるためです。そのあたりで、最大限の配慮をさせていただいたことをお察しください。

この記事のトラックバックURL:

http://www.kijineko.co.jp/trackback/736

CとC++の違い

あいかわらず「c c++ 違い」といったキーワードで検索してこられる方が多いようです。これまでにも何度かこの話題を取り上げてきましたが、すでに古くなってしまった記事もありますので

このエントリーを含むはてなブックマーク