displayX
@displayX (あーる)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Visual Studioでポインタ配列の宣言時にエラー

解決したいこと

Visual Studioでポインタ配列を宣言したらエラーが出ます。
paiza.ioなら問題ないのに。

発生している問題・エラー

#include<stdio.h>
int main() {
    char *s[] = {"aa", "b", "cc"}; // エラー
    return 0;
}
 error C2440: '初期化中': 'const char [3]' から 'char *' に変換できません。

paiza.io なら通るのに、どういうことでしょうか?
https://paiza.io/

0

3Answer

ファイルの拡張子が.cppになっていないでしょうか。
拡張子.cppはC++のソースという意味になるので、拡張子を.cに変更してみてください。
こちらでは、それで問題なくビルドできるようになりました(VisualStudio2019 Community)。

1Like

Comments

  1. @displayX

    Questioner

    拡張子は .cpp でした。面倒なので。
    ありがとうございます。
    試してみます。

Comments

  1. ちなみに`clang`も`gcc`も共に`WARNING`がでるだけでエラーにはなっていなかった。
    `const`つけたら`WARNING`の数は減った
  2. @displayX

    Questioner

    調べてみたら、VSは2019版から「ポインタ配列が使用不可」になったそうです。
    つまんないので、GCCに変えました。
    GCCなら通って、今は楽しいです笑

    ポインタ配列にはconstを付けてみます。
    ありがとうございます。

おそらくVC++でコンパイルする時はC++のサブセットとしてコンパイルされているので暗黙的な型変換が禁止されているのだと思います。
何れにせよ本来constであるものを不用意にキャストするのはバグのもとになるのでwarningはなるべくなくしたほうが安心です。

0Like

Comments

  1. @displayX

    Questioner

    分かりました。
    warningを消していくようにします。
    VSは、もう少し理解してから再開してみます。
    (今は続けられるように楽しい方でやっていこうと思います)
    ありがとうございます。

Your answer might help someone💌