質問
次のコードがあります: ジェネラコディセタグプレ
「gcc-Wall-ansi-pedantic」で正常にコンパイルされます。しかし、別のツールチェーン(Rowley)では、について不平を言います。 ジェネラコディセタグプレ
char ** tが存在する行。これは本当に違法なコードですか、それとも大丈夫ですか?
すべての回答に感謝します。私は今、私の問題がどこにあったかを知っています。しかし、それは新しい疑問を提起します:
解決
私には完全に合法のようです。char *[3]
はchar **
に減衰するため、割り当ては有効である必要があります。
GCC4.4.5もCLang1.1も文句を言いません。
他のヒント
実際には、array1
はchar **
型のポインタに減衰するはずですが、実際の型はchar *[3]
であるため、警告が表示されます。
警告を抑制するには、明示的にキャストしてみてください: ジェネラコディセタグプレ
array1は(char *)[3]
であり、char **
とは意味的に異なりますが、割り当てでは、char **
に適切に分解する必要があります
ポインタと配列であり、静的スコープでのみ互換性があります。グローバルスコープでは、ポインタと配列は同じではありません。2つを混在させると、未定義の動作になります。したがって、私の意見では、警告は正しいです。
入れてみてください: ジェネラコディセタグプレ
1つのモジュールで: ジェネラコディセタグプレ
別の方法で、コンパイルしてリンクします。(私はそれを試していません…)私は物事がうまくいかないと思います...
所属していません StackOverflow