问题标签 [private-header]

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 投票
6 回答
9784 浏览

c - 什么是 C 中的“私有标头”?

我最近一直在学习C,在我的一本教科书中,我找到了对带有“.r”扩展名的文件的引用。现在,您可以想象,谷歌搜索“r”或“文件扩展名 r”并不高效,所以我想知道您是否可以帮助我。

它出现在以下代码块中

作者提到它是一个“私有标题”,但我希望他能更清楚地知道它到底是什么。

0 投票
5 回答
54854 浏览

c++ - 私有/公共标头示例?

有人可以给我一个公共和私人标题如何工作的例子吗?我在网上做了一些阅读,但我似乎无法通过示例代码找到很多有用的信息。有人建议我应该使用私有标头来分隔代码的公共和私有部分以创建静态库。经过一番阅读,我对它的工作原理有了一个大致的了解,但我真的很感激有一个很好的例子来帮助我入门。具体来说,我不太明白的是如何将接口函数放在我的公共头文件中,而将私有变量/函数放在我的私有头文件中?谢谢!

编辑:

也许我的问题措辞不正确,但我的意思是,例如,我有 myMath.h 和 myMath.cpp,而 myMath.h 有:

myMath.cpp 具有函数的实现。我怎样才能使myMath.h只有三个公共函数,而私有变量在另一个文件(例如myMath_i.h)中定义,这三个文件的方式是在我创建一个静态库后,用户只需要 myMath.h。这也意味着 myMath.h 不能#include myMath_i.h。所以像:

myMath.h:

和 myMath_i.h:

当然这是不可能的,因为那时我将重新定义 myMath 类......

0 投票
3 回答
988 浏览

objective-c - 使用下划线作为前缀命名实例变量在 Cocoa (Objective-C) 中是否有任何副作用?

可能重复:
可可objective-c 类中变量前面的下划线如何工作?

我发现在 Apple 框架的头文件中,Apple 名称实例变量在类接口内带有前缀下划线。像下面的 _delegate 实例:

但是如果我们在定义我们自己的实例变量时遵循这个命名约定,会有任何副作用吗?我一直在寻找这个问题的答案很长一段时间。

在苹果的代码指南中,苹果只是说他们保留了以下划线开头的方法名称,他们没有提到对实例变量命名问题的任何限制。

我的同事说,如果您定义以下划线开头的实例变量,如果您选择的名称存在于框架的私有头文件中,则可能会与框架发生冲突。这是否可能,或者这是否成为我们不应该使用以下划线开头的名称的原因,因为苹果可能已经使用了它?

0 投票
4 回答
915 浏览

c++ - 支持函数声明应该去哪里?

我有一个 .cpp 源文件,其中包含一些需要公开访问的功能和一些仅在此源文件中使用的支持功能。

我一直将所有这些函数声明放在头文件中,因为我个人发现在一个地方查看类提供的所有内容很有用。但是我想指出这些函数是否供内部使用,类似于private访问修饰符,但不使用类(它们是独立函数)。

一些可能的解决方案是:

  • 将私有声明放在源文件中。
  • 将私有声明放在单独的标题中。

这两种解决方案都将公共和私有功能拆分为单独的文件,我想避免这样做。

0 投票
0 回答
252 浏览

ios - 如何从导入私有标头的静态库中访问公共标头?接收词汇或预处理器问题

我在 Xcode 中有一个静态库项目,其中我利用构建阶段的 Copy Headers 部分使某些类只能从另一个项目访问,并防止所有其他类在我的静态库项目之外被访问。

我创建了一个 View Controller 项目,在其中链接到我构建的库(.a 文件)。当我导入存在于由 Xcode 的 Copy Headers 功能自动生成的包含文件夹中的头文件时(我假设这现在是一个公共头文件),我们称它为 Header A,它返回错误 Lexical or Preprocessor Issue,并且它找不到由 Header A 导入但未添加到 Copy Headers 部分的头文件,因为我不希望用户访问它(我假设它是私有头,因为我没有将它添加到包含通过 Copy Headers 文件夹),我们称之为 Header B。

如果我将头文件复制到包含路径,则 Xcode 允许导航以查看我试图避免的代码。有没有办法只允许访问某些类,这些类本身可以访问私有类?是否有某种方法可以将我缺少的类声明为 Public 和 Private?

我感谢您的帮助!

0 投票
0 回答
175 浏览

objective-c - Swift 应用程序代码未找到静态库中私有标头中的类别

我正在尝试在 Swift 中重做一个目标 C 应用程序,Swift 应用程序和目标 C 应用程序都将使用用目标 C 编写的相同静态库。我在静态库的私有标头中有一个类别。Objective C 应用程序在访问 category 方法时没有问题,但 swift 应用程序不能。如何在不将头文件作为公共头文件的情况下完成这项工作

0 投票
1 回答
80 浏览

ios - 如何在不将私有标头包含到框架中的情况下创建私有模块?

我想创建一个私有模块而不将私有标头包含到框架中。我可以编译框架。但是当我将它添加到应用程序项目中时,Xcode 给出了以下错误:

当我将伞头包含到框架中时,我收到以下错误(来自伞头内部):

我试图设置Header Search Path到带有保护伞私有标题和所有私有标题的文件夹,但它没有帮助。