我有以下 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);
所以定义显然没有在标题中找到。