2

我有一个类(NDTrie on github),它使用 c struct 作为其内部结构,通过将 fno-objc-arc 添加到源文件而不是要求用户在该源文件的构建阶段设置它,有没有办法做到这一点。

4

2 回答 2

0

每个文件的编译器标志是在每个项目的基础上附加到文件上的(要编译成某种形式的机器代码的文件通常会尽量避免使用元数据)。如果您想指定标志并让它更新任何 Xcode 项目中的必填字段,您可以使用CocoaPods为您的依赖项编写一个 pod 文件。让底层工具处理其余部分。

于 2013-02-23T06:55:56.913 回答
0

不,在这种情况下,不可能根据特征分离翻译部分并为该翻译更改它们的标志。

你应该从另一个角度接近它。ARC 功能根据当前翻译的编译器标志将所有预处理的输入视为是否启用了 ARC。

最明显的解决方法:

0) 减少影响:尽可能隐藏实施

1) 翻译特定条件:__has_feature(objc_arc)用于确定您是否正在处理启用 ARC 的翻译 - 如果您使用 clang,__has_feature(objc_arc)则启用 ARC 时表达式扩展为 1。然后,您可以有条件地使程序的某些部分可见或对其进行不同的注释,具体取决于是否启用了 ARC。

2) 检测并失败:在剩余的一些情况下,您可以选择:

// >> detect clang or GCC if needed
#if __has_feature(objc_arc)
#error This file cannot be compiled with ARC enabled (+HYPERLINK so you don't get a flooded inbox)
#endif
// << detect clang or GCC if needed
于 2013-02-23T07:08:37.277 回答