只是为了看看它是否会起作用(我知道这是糟糕的形式),我在头文件中完全定义了一个函数,并为主函数中的主函数做了相应的前向声明cpp文件。 C++函数不需要在它们使用的翻译单元中定义,因此头文件几乎完全只是前向声明(内联函数除外)。但是,当我试图编译这个项目时,它说没有未解决的外部问题。头文件没有被编译(C++ Visual Studio 2015)
当我将头文件的全部内容移动到一个源文件(除去头文件),它编译得很好,并按预期执行。那么,构建项目时是不是编译头文件,还是只有一些我不知道的异常?
此外,即使我只是去属性资源管理器中的头文件的属性,并将其File Type
设置为C/C++ Code
并将其扩展名更改为.cpp,它仍然不会编译(即使它,如果我只是删除它并创建一个新的源文件,我认为这是最奇怪的部分)。
(我与禁用/Za
扩展工作,如果改变任何东西)
下面的代码文件
//main.cpp
void foo();
void main()
{
foo();
}
和头文件
//test.h
#include <iostream>
void foo()
{
std::cout << 'a';
}
除非通过'#include'预处理将头文件拉入翻译单元,否则不会编译头文件。由于您的唯一.cpp文件没有这样的包含,因此它不会被编译,因此没有任何内容可用于(并且显然是您唯一的)翻译单元。 – WhozCraig
http://faculty.cs.niu.edu/~mcmahon/CS241/Notes/compile。HTML –