やはり、CとC++の区別がつかない人は少なくないようだ
教えて!gooで「C言語での質問です。」というQ&Aを見て感じたのですが、CとC++の区別がついていない人が少なくないことを改めて認識しました。No.3の回答がそれです。
>char str[3] = "AAA"; は 間違いですね コンパイルしたら エラーがでました。
このように指摘しているわけですが、このコードをCコンパイラでコンパイルしてエラーが出るとすれば、そのコンパイラが非標準処理系であるか、不具合があるかのどちらかです。「C++プログラマのためのC言語入門」の「第9回 文字定数と文字列リテラル」でも解説しましたが、char型の配列を文字列リテラルで初期化する場合、ナル文字分の要素が足りなくても問題なくコンパイルできます。
かなり細かい部分の仕様ですので、これを知らないこと自体はしかたがありません。しかし、問題は、(質問のタイトルとしてはふさわしくありませんが)「C言語での質問です。」と明記されているにもかかわらず、C++としてコンパイルした上で、「エラーがでました」と指摘している点にあります。
勘違いしていただきたくないのですが、今回はこの回答者を個人攻撃しているわけではありません。実際、このような事実誤認は頻繁に見受けられます。ですので、今回はたまたま具体例として挙げさせていただきましたが、決して特定の誰かの問題ということではないのです。ただ、今回の件を「C/C++迷信集」に入れなかったのは、やはり名指しの引用を含んでいるためです。そのあたりで、最大限の配慮をさせていただいたことをお察しください。
この記事のトラックバックURL:
CとC++の違い
from 株式会社きじねこ on 2010-04-12 (月) 01:08あいかわらず「c c++ 違い」といったキーワードで検索してこられる方が多いようです。これまでにも何度かこの話題を取り上げてきましたが、すでに古くなってしまった記事もありますので
