質問

次のコードがあります: ジェネラコディセタグプレ

「gcc-Wall-ansi-pedantic」で正常にコンパイルされます。しかし、別のツールチェーン(Rowley)では、について不平を言います。 ジェネラコディセタグプレ

char ** tが存在する行。これは本当に違法なコードですか、それとも大丈夫ですか?

すべての回答に感謝します。私は今、私の問題がどこにあったかを知っています。しかし、それは新しい疑問を提起します:

文字列配列の初期化

役に立ちましたか?

解決

私には完全に合法のようです。char *[3]char **に減衰するため、割り当ては有効である必要があります。

GCC4.4.5もCLang1.1も文句を言いません。

他のヒント

実際には、array1char **型のポインタに減衰するはずですが、実際の型はchar *[3]であるため、警告が表示されます。

警告を抑制するには、明示的にキャストしてみてください: ジェネラコディセタグプレ

array1は(char *)[3]であり、char **とは意味的に異なりますが、割り当てでは、char **に適切に分解する必要があります

ポインタと配列であり、静的スコープでのみ互換性があります。グローバルスコープでは、ポインタと配列は同じではありません。2つを混在させると、未定義の動作になります。したがって、私の意見では、警告は正しいです。

入れてみてください: ジェネラコディセタグプレ

1つのモジュールで: ジェネラコディセタグプレ

別の方法で、コンパイルしてリンクします。(私はそれを試していません…)私は物事がうまくいかないと思います...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top