私は次のCコードを持っています:
#include <math.h>
int main(int argc, char ** argv)
{
double mydouble = 100.0;
double whatever = round(mydouble);
return (int) whatever;
}
これをコンパイルすると、次の警告が表示されます。
round_test.c: In function ‘main’:
round_test.c:6: warning: implicit declaration of function ‘round’
round_test.c:6: warning: incompatible implicit declaration of built-in function ‘round’
私は C に慣れていませんが、#include によって round() の宣言がスコープに含まれていると思いました。私は ANSI 標準 (C99 は私が持っている唯一のコピーです) をチェックしました。これは、math.h ヘッダーに round() 関数が存在することを確認しています。ここで何が欠けていますか?
編集:コンパイラは、Ubuntu(intrepid、IIRC)のGCC 4.3.2です。gcc -E を実行すると、次のようになります。
$ gcc -E round_test.c | grep round
# 1 "round_test.c"
# 1 "round_test.c"
# 2 "round_test.c" 2
double whatever = round(mydouble);
したがって、定義は明らかにヘッダーにありません。