3
コメントのみが変更されたプログラムの2つのバイナリがgccで正確に一致しないのはなぜですか?
2つのCプログラムを作成しました プログラム1 int main() { } プログラム2 int main() { //Some Harmless comments } 私の知る限り、コンパイルするとき、コンパイラ(gcc)はコメントと冗長な空白を無視する必要があるため、出力は類似している必要があります。 しかし、出力バイナリのmd5sumsを確認したところ、一致していません。また、最適化-O3を使用してコンパイルしようとしました-Ofastが、それでも一致しませんでした。 ここで何が起きてるの? 編集:正確なコマンドとそこにあるmd5sumsがあります(t1.cはプログラム1であり、t2.cはプログラム2です) gcc ./t1.c -o aaa gcc ./t2.c -o bbb 98c1a86e593fd0181383662e68bac22f aaa c10293cbe6031b13dc6244d01b4d2793 bbb gcc ./t2.c -Ofast -o bbb gcc ./t1.c -Ofast -o aaa 2f65a6d5bc9bf1351bdd6919a766fa10 aaa c0bee139c47183ce62e10c3dbc13c614 bbb gcc ./t1.c -O3 -o aaa gcc …