0

我找不到头文件的用途。为什么我们需要它?C# 中没有标头,您只需编写“使用”即可。

另外,头文件和cpp文件有什么区别?

谢谢。

4

4 回答 4

3

回答“头文件的目的是什么”部分,没有人谈论过,将方法定义与实际实现分开允许编译器在对方法的实现进行更改时不重新编译项目中的所有文件.

这是因为调用它的文件仍然以相同的方式调用它(这在标头中定义),并且如果实现更改(在 cpp 文件中),编译器只会编译更改的文件并再次进行链接从而在处理大型项目时节省大量时间。

于 2012-09-27T22:07:52.150 回答
1

请查看以下文章,该文章解释了 c# 编译器的工作原理以及它为什么不需要标头。

于 2012-09-27T21:57:34.917 回答
0

AFAIK没有区别。您始终可以编写完全没有标题的代码:

a.cpp

class A {
public:
   void foo();
};

void A::foo() {}

b.cpp

class A {
public:
   void foo();
};

int main() { A a; a.foo(); }

然而,将头文件用于公共定义更容易、方便且产生更少的错误,否则必须将其写入每个翻译单元 (.cpp):

class A {
public:
   void foo();
};

a.cpp

#include "a.h"
void A::foo() {}

b.cpp

#include "a.h"

int main() { A a; a.foo(); }

当然,您只编译 .cpp 文件。但是,标题有“预编译”。


为什么 C# 不需要标头?我的看法完全不同。在 C# 中,您只有标头,并且using仅相当于 C++ include。但这只是我个人的看法:D

于 2012-09-27T22:01:22.943 回答
0

您需要更好地了解 .NET、C# 和 IL。它不像“使用”指令那么简单。IL 充满了循环依赖问题,据我所知,微软正在尝试一些巧妙的技巧来解决循环依赖问题,但没有一个是完美的。

也许当你毕业到大项目时,你会遇到循环依赖问题。到那时,只要记住 CPP/HPP 的区别有助于避免循环依赖......

于 2012-09-27T22:21:20.927 回答