アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー
Cのキャスト廻りの文法が厳格になったらしい (スコア:1)
過去のコードの継承性がライブラリレベルで失われる(例えばxmultiとか)だけでも面倒臭いどころかプロジェクト次第では致命傷になるのに、コンパイラレベルで継承性を失うと滅茶苦茶な事になるので不安があるのでおしえてえらいひと。って事です。
# そりゃ、基本に忠実でない事をやるのはいけないのでしょうけど、
# 組込み系でアセンブラで書くと移植性がどーこーって場合なんかは
# キャスト廻りでトリッキーな事をするのが解になることも往々にして
# あるので…
type-punning (スコア:2, 参考になる)
有効になるため、かなり多くのプログラムで思わぬ結果をもたらします。
例えば、
long *v = malloc(sizeof(long));
*v = 0;
*(short *)v = -1;
printf("%ld\n", *v);
printf("%ld\n", *v);
を -O2 を付けてコンパイルすると、最初の出力は 0、次のは
65535 になります。
gcc の info にあるように、union を使って避けることも
できますが、大抵は面倒なので -fno-strict-aliasing を
おまじないのように付ける事が多いですね。
Re:Cのキャスト廻りの文法が厳格になったらしい (スコア:0)
そもそも規格外なので、正しい記述に修正するべきだと思いますが。
Re:Cのキャスト廻りの文法が厳格になったらしい (スコア:0)
gcc言語のコンパイラだと思ってたのですが、
なにか方針の変化があったんでしょうか?
Re:Cのキャスト廻りの文法が厳格になったらしい (スコア:0)
Re:Cのキャスト廻りの文法が厳格になったらしい (スコア:0)
Re:Cのキャスト廻りの文法が厳格になったらしい (スコア:0)
># キャスト廻りでトリッキーな事をするのが解になることも往々にして
># あるので…
単純に好奇心ですが、具体的にどんな問題と解決方法があるんでしょ?