私は最近(大学用の)cpクローンを作成しましたが、たまたまチャンスがなかったものを発見しました。
これは、少なくともCソースをコンパイルするGCCに適用されます。
私はこの特定のCプログラムの主な開発をMacOSX(10.6.4)で行い、Appleの/usr/bin/gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
Copyright (C) 2007 Free Software Foundation, Inc.
ただし、最新のgccを使用してMac内のArch Linux仮想マシンでテストを実行しました(追加、カスタマイズ、Appleのようなmodはありません)
gcc (GCC) 4.5.1
Copyright (C) 2010 Free Software Foundation, Inc.
そして、そこにあるUbuntu10.04.1LTSのクラスでビルドする必要がありました。
私のMakefileは次のようなものでした:
CC=gcc
#CFLAGS=-O0 -g -Wall
CFLAGS=-O3 -Wall -finline-functions
EXE=copy
compile:
$(CC) $(CFLAGS) -o $(EXE) main.c
そのため、私は常に(すべてのOSで)gccを-Wall
有効にして実行していました。MacとArchは警告を表示しませんでした。
Ubuntuは、ある場合とない場合の2つの警告を出力しました -Wall
do_copy.c: In function 'do_copy_file2file':
do_copy.c:27: warning: ignoring return value of 'realpath', declared with attribute warn_unused_result
do_copy.c: In function 'do_copy_symlink2file':
do_copy.c:117: warning: ignoring return value of 'symlink', declared with attribute warn_unused_result
UbuntuのGCCバージョンがディストリビューションのデフォルトです。
gcc (Ubuntu 4.4.3-ubuntu5) 4.4.3
なぜそれが起こるのですか?
他の2つのOSとUbuntuで警告が表示されないのはなぜですか?