[原]昨天碰到的一个诡异问题

文件a.c中定义如下函数并在a.h中声明:

double get_number()
{
    return 5;
}

在b.c中调用

void test()
{
    double number = get_number();
    .....

}

number的值与get_number()的返回值却不同, 在vs2005中单步调的, 看着明明返回值是5, 到了number那里就变成不知是什么数了... 折腾了半天, 发现b.c忘记包含a.h了, 导致b.c编译时未找到get_number()的声明, 按默认函数类型编译的... 而程序比较大, vs2005输出的垃圾警告信息太多, 把重要的都淹没了...

原文地址:https://www.cnblogs.com/techsunny/p/1452383.html