问题标签 [header-files]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
31 回答
745667 浏览

c++ - #include 和有什么区别和#include“文件名”?

在 C 和 C++ 编程语言中,在语句中使用尖括号和使用引号有什么区别include,如下所示?

  1. #include <filename>
  2. #include "filename"
0 投票
4 回答
275 浏览

c - 在 C 编辑器中自动定义...为什么?

Eclipse在 C 项目中创建一个新文件(.c.h文件)时,编辑器总是在文件顶部自动创建一个,如下所示:如果文件名为“myCFile.c” ,则开头#define会有一个#define像这样的文件

我也看到其他编辑器也这样做(我认为是 Codewright 和 SlikEdit)。似乎对编辑器#defines没有任何作用,因为我可以毫无问题地删除它们,而且我想不出 想使用它们的原因。有谁知道他们为什么在那里?

0 投票
17 回答
18284 浏览

c++ - 将所有代码放在 C++ 头文件中的优点和缺点?

您可以构造一个 C++ 程序,以便(几乎)所有代码都驻留在头文件中。它本质上看起来像一个 C# 或 Java 程序。但是,在编译时,您确实需要至少一个.cpp文件来拉入所有头文件。现在我知道有些人绝对会讨厌这个想法。但我没有发现这样做有任何令人信服的缺点。我可以列出一些优点:

[1] 更快的编译时间。所有头文件只被解析一次,因为只有一个 .cpp 文件。此外,一个头文件不能包含多次,否则会导致构建中断。使用替代方法时,还有其他方法可以实现更快的编译,但这很简单。

[2] 它通过使它们绝对清晰来避免循环依赖。如果ClassAin对inClassA.h有循环依赖,我必须提出一个前向引用并且它会突出。(请注意,这与编译器自动解析循环依赖关系的 C# 和 Java 不同。这鼓励了 IMO 的不良编码实践)。同样,如果您的代码在文件中,您可以避免循环依赖,但在实际项目中,文件往往包含随机标题,直到您无法弄清楚谁依赖于谁。ClassBClassB.h.cpp.cpp

你的意见?

0 投票
3 回答
4384 浏览

header-files - 外部依赖/头文件

在 Windows MSVC6.0 编译器中,如果有一个工作区,其中包含一个项目,那么Header Files 文件 夹中会包含哪些文件,External Dependencies文件夹中会包含哪些文件?

我认为那些明确包含的文件(#include <*.h> 将在Header Files 文件夹中,而这些文件又包含在添加的头文件中,将在External Dependencies文件夹中?但似乎并非如此。

那么两者有什么区别呢?

-广告

0 投票
9 回答
315208 浏览

c++ - 为什么要有头文件和 .cpp 文件?

为什么 C++ 有头文件和 .cpp 文件?

0 投票
9 回答
13261 浏览

c - 在 C 中定义 const 值

我有一个 C 项目,其中所有代码都组织在*.c/*.h文件对中,我需要在一个文件中定义一个常量值,但是它也将用于其他文件。我应该如何声明和定义这个值?

应该static const ...*.h文件里的一样吗?如extern const ...*.h文件中并在文件中定义*.c?如果值不是原始数据类型(int,double等),而是 achar *或 a ,这有什么关系struct?(虽然在我的情况下它是一个double。)

通常,在文件中定义东西*.h似乎不是一个好主意。应该在文件中声明事物*.h,但在文件中定义它们*.c。但是,这种extern const ...方法似乎效率低下,因为编译器无法内联该值,而是必须始终通过其地址访问它。

我想这个问题的本质是:是否应该在 Cstatic const ...中的文件中定义值*.h,以便在多个地方使用它们?

0 投票
6 回答
1748 浏览

c++ - C++ 头文件 - 困惑!

当我尝试将 socket.h 包含到 game.h 中时,问题就出现了,因为 socket.h 已经包含了 game.h。我该如何解决这些问题?

0 投票
11 回答
76409 浏览

c++ - C++ 命名空间和包含

为什么我们在 C++ 程序中同时需要using namespace和指令?include

例如,

#include <iostream>为什么仅仅拥有或仅仅拥有using namespace std并摆脱另一个是不够的?

(我在想一个与 Java 的类比,从哪里import java.net.*导入所有内容java.net,你不需要做任何其他事情。)

0 投票
5 回答
19210 浏览

c++ - 使用 C++ 头文件的最佳实践

我对头文件的使用有以下疑问。

1 - 包括在评论后放置的守卫

Herb Sutter 在他的“C++ 编码标准”一书中说,像上面这样的代码是有问题的。他说“#ifndef”语句应该出现在头文件的第一行。我觉得这没有说服力。这是你们/女孩在头文件中的后续吗?

2 - 在头文件中使用命名空间

上面的代码是否使用正确的做法?我的意思是,你在头文件中使用命名空间吗?我知道为什么在头文件中导入命名空间是没有意义的,但是像上面这样的声明呢?

如果上述方法是正确的,您如何对另一个命名空间中的类进行“前向声明”?是不是像

前向声明”是避免“循环依赖”的唯一方法,对吗?

0 投票
6 回答
103358 浏览

c++ - 在 C++ 的头文件中编写函数定义

我有一个有很多小功能的类。小函数是指不进行任何处理而只返回文字值的函数。就像是:

我创建了一个头文件“Foo.h”和源文件“Foo.cpp”。但是由于函数很小,我正在考虑将它放在头文件本身中。我有以下问题:

  1. 如果我将这些函数定义放在头文件中,是否有任何性能或其他问题?我会有很多这样的功能。
  2. 我的理解是编译完成后,编译器会展开头文件并将其放在包含的位置。那是对的吗?