两个.c文件具有相同的编译设置 - VC++报告没有错误,也没有编译其中一个

sha*_*oth 5 c c++ linker visual-c++

我正在尝试将一组.c文件从开源项目编译成静态库.我已经创建了一个VC++ 9项目文件,像往常一样设置所有内容.我将两个.c文件添加到项目中.它们没有任何特殊的编译设置 - 所有设置都在项目级别设置并设置为默认值,但我关闭了预编译的标题.

我按"构建项目" - VC++说"完成",创建了两个.obj文件和一个.lib文件,但是生成的.lib文件中没有来自其中一个.c文件的函数.

如果我#error在两个文件中的一个文件的最开头添加VC++就会停止编译和报告.但是如果我对其他文件执行相同操作,它只是静默编译并且不报告错误,因此它显然不会编译文件,这就是函数无法访问.lib文件的原因.

现在我想如果我添加一些文本(比如#error)作为.c文件的第一行,编译器会看到它,无论任何预处理器设置,编译器选项等等.但我有一个文件log.c:

#error
whatever text follows
Run Code Online (Sandbox Code Playgroud)

和Visual C++报告:

1>------ Build started: Project: MyProject, Configuration: Debug Win32 ------
1>Compiling...
1>log.c
1>Build log was saved at "file://whatever\Debug\BuildLog.htm"
1>MyProject - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

编译器发生了什么,如何让它改变主意?

Joe*_*oeG 2

编译器可能认为目标文件与源文件是最新的。其中一个目标文件的时间戳是未来的吗?