2016mpacc教学案例库:cl /c mylib.c的错误

来源:百度文库 编辑:高考问答 时间:2024/05/10 12:46:40
mylib.c内容如下:

void foo()
{
malloc(1,_NORMAL_BLOCK, __FILE__, __LINE__ );
}
提示为 _NORMAL_BLOCK没有定义.
如果添加#include <crtdgb.h>就没问题了.我查了查<crtdgb.h>的内容,有NORMAL BLOCK的定义,但是没有__FILE__,__LINE__的定义.那么为什么这两个没有出现未定义的提示呢.还有,
main.c:
int main()
{
foo();
return 0;
}
cl /c main.c尽管foo没有定义,却也没出错.我觉得出现”未定义”是link的时候没有找到,所以才出的错,可是第一个函数为什么在编译阶段就报错了呢?

1.那么为什么这两个没有出现未定义的提示呢?
你包含了哪些头文件?可能另外的头文件里面有定义。
2.我觉得出现”未定义”是link的时候没有找到,所以才出的错,可是第一个函数为什么在编译阶段就报错了呢?
NORMAL_BLOCK是宏么?宏是预编译处理的,也就是在编译之前就处理了宏,将宏都替换掉,因此会出现你描述的状况。