【发布时间】:2014-08-04 20:38:35
【问题描述】:
显然,在 .c 文件中,Visual Studio 会自动生成未识别符号的声明。我尝试使用不包含 stdio.h 的 printf(),以及调用一些随机 asd() 函数并且它编译时没有错误,只有警告出现,编译器假定 extern 返回 int。可以肯定的是,我编译了程序集输出,它确实有那些 extern 声明。当然链接不成功。
我的问题是,如何关闭自动生成未识别符号的声明?我有一些项目要做,可能会把我搞砸。
【问题讨论】:
-
编译器假定 extern 返回 int 意味着编译器没有您尝试调用的函数的定义。如果您包含您正在使用的调用所需的标头,并且每个函数的定义对您的环境是可见的(即运行时环境,例如:msvcr100.dll,其中一些版本包含在 Visual Studios 中)您的构建将不会出现错误,也不会出现那些特定的警告。
-
@ryyker OP 已经在问题中说明了你刚才所说的一切。
-
@Jashaszun - 再读一遍。 尝试使用 printf() 而不包括 stdio.h。这意味着编译器没有它需要的信息。 C 假定
int,因此在警告中定义了 extern,但构建将失败。 -
@ryyker 嗯...是的。他编译时没有
stdio.h,这就是为什么他希望得到错误,而不仅仅是警告。 -
发布sscce ...相关代码,以及编译字符串。
标签: c compiler-construction visual-studio-2013