问题标签 [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 投票
2 回答
1202 浏览

c# - 实现 C# 接口的 C++ 标头

可以从 C# 接口生成 C++ 头文件吗?

例子:

C#接口:

C++ 头文件:

返回“错误 C3766”。

0 投票
7 回答
8788 浏览

c++ - 具体类的单独头文件 - C++

背景

我有一个抽象类,比如

会有很多具体的类只实现DoConvertion方法。

会有很多这样的具体实现。我创建了一个头文件,比如CharacterConverter.h,它具有抽象类IConverter

问题

由于我的具体类只实现了DoConvertion方法,是否需要为每个具体类创建单独的头文件?我的意思是是否需要为所有具体类创建ImageConverter.hTextConverter.h等?所有这些头文件都将包含与IConverter抽象类相同的代码。

有什么想法吗?

0 投票
4 回答
5437 浏览

c - 多个目录中的头文件:最佳实践

我是C新手

我用动态语言(javascript、python、haskell 等)编写了很多代码,但我现在正在为研究生院学习 C,但我不知道自己在做什么。

问题

最初,我使用 makefile 在一个目录中构建我的所有源代码,效果非常好。但是,我的项目正在增长,我想将源代码拆分为多个目录(单元测试、实用程序、核心等)。例如,我的目录树可能如下所示:

test/test_foo.c同时使用src/foo.csrc/foo.h。使用makefile,构建它的最佳/标准方法是什么?最好有一条规则用于构建项目,一条规则用于构建测试。

笔记

我知道还有其他方法可以做到这一点,包括 autoconf 和其他自动解决方案。但是,我想了解正在发生的事情并能够从头开始编写 makefile,尽管它可能不切实际。

任何指导或提示将不胜感激。谢谢!

[编辑]

所以目前给出的三种解决方案如下:

  • 将全局使用的头文件放在并行include目录中
  • 使用状态中的路径,#include#include "../src/foo.h"
  • 使用-I开关通知编译器包含位置

到目前为止,我喜欢-Iswitch 解决方案,因为它不涉及在目录结构更改时更改源代码。

0 投票
15 回答
17334 浏览

c++ - 每个 C 或 C++ 文件都应该有一个关联的头文件吗?

每个 .C 或 .cpp 文件都应该有一个头 (.h) 文件吗?

假设有以下 C 文件:

  1. 主.C

  2. 功能1.C

  3. 函数2.C

  4. 函数3.C

main()Main.C 文件中的位置。应该有四个头文件

  1. 主文件

  2. 函数1.h

  3. 函数2.h

  4. 函数3.h

或者所有 .C 文件应该只有一个头文件?

什么是更好的方法?

0 投票
4 回答
2060 浏览

c++ - 在 typedef 中使用类型时包含在头文件中的规则

如果我创建

在头文件中,我需要包含“MyClass.h”还是转发声明就足够了?

头文件:

这里的链接规则是什么?

0 投票
5 回答
1085 浏览

c++ - 使用 .h 作为 c++ 文件的标头是否错误?

使用 .h 作为 c++ 文件的标头是否错误?

我到处都能看到它,尤其是用“C 风格”编写的代码。我注意到 Emacs 总是为 .h 标头选择 C ​​突出显示样式,而为 hpp 或 hh 选择 c++。

标记你的标题.h实际上是“错误的”还是只是让我烦恼的事情?

编辑:

这让我很恼火有一个很好的(ish)原因,如果我有标记为“hpp & cpp”的项目文件,我可以使用“grep something *pp”等。否则我必须输入“.h cpp”

0 投票
4 回答
4969 浏览

c++ - 包括g ++标头:仍然找不到定义

晚上好 :)

我在玩 g++ 和 makefile。我已经到了这一点:

富.h:

Foo.h 最终包含在我的主 cpp 文件中,因此我可以通过调用 start/stop 来启动。

然后是bar.h:


但是 g++ 似乎不喜欢它:

我正在使用makefile,并尝试了以下组合:

尽管我认为我不应该在这里添加 bar.h,但不应该将它包含在 foo.h 中就足够了吗?

为了澄清,这大致是它现在的设置方式(是的,我知道这可以以更有效的方式完成):

这是怎么回事?我认为这是我对 g++ 及其处理标头的方式所缺少的东西,请指出正确的方向!

编辑 - 找到解决方案:

嗬!我现在觉得很傻。正在搞乱 boost::asio 并且有点忘了我仍然把它留在我的标题顶部的某个地方:使用 boost::asio::ip::tcp;

假设有一个 boost::asio::ip::tcp::bar 函数:D

哦,好吧,还是谢谢!

0 投票
7 回答
3350 浏览

c - 包含头文件是如何发生的?

我在工作区中有一个带有 *.c 和 *.h 文件的纯 C 代码。
我有一个头文件 1.h 声明一些结构为

但是当我尝试在另一个头文件 2.h 中声明类型为 struct my1 的变量时,如下所示: -

它在此声明点给出错误。

看起来 my1 在 2.h 文件中未定义。

在文件 1.h 中我需要包含 2.h,所以在文件 2.h 中我不能包含 1.h,因为担心递归包含。

我的问题是:-

  1. 在这种情况下,我需要声明什么来解决编译错误?

    这整件事让我想到了有关头文件包含的更多问题。

  2. 头文件是如何包含的,按什么顺序,先是哪个头文件,然后是哪个头文件?

  3. 头文件的递归包含会导致错误一个文件包括其他和其他包括第一个?

出于某种安全原因,无法发布实际的代码片段,如果问题在某种程度上造成了一些可读性问题,我们深表歉意。

0 投票
17 回答
14050 浏览

c++ - C++ 应该消除头文件吗?

许多语言,例如 Java、C#,并没有将声明与实现分开。C# 有一个分部类的概念,但实现和声明仍然保留在同一个文件中。

为什么 C++ 没有相同的模型?有头文件更实用吗?

我指的是当前和即将发布的 C++ 标准版本。

0 投票
6 回答
1954 浏览

objective-c - 在 Objective-C 中包含头文件的成本

这似乎是一个非常愚蠢的问题,但是#import在 Objective-C 中包含(实际上是调用)头文件的成本是多少?我厌倦了在不同位置不断包含相同的标题,因此我决定简单地创建一个GlobalReferences.h包含几个常用标题的文件。

如果甚至不使用对其他文件的引用,是否有任何可观的成本?我的直觉告诉我“不”,因为链接器似乎只是在使用时知道其他文件#import,但我不确定是否需要对 iPhone 开发采取特殊考虑,这是我的项目所关注的。有什么想法吗?