测试目标中的程序中出现意外的“@”

Posted

技术标签:

【中文标题】测试目标中的程序中出现意外的“@”【英文标题】:unexpected '@' in program in test target 【发布时间】:2015-10-21 09:57:35 【问题描述】:

我有如下声明的字符串常量。此代码编译器在正常的应用程序调试和发布目标中。但是在应用程序的测试目标(Ctrl + U)中,我在测试目标的程序中遇到了意外的“@”错误。使用 xcode 7。

模块已启用,如 this question 中的回答。

HeaderA.h

#define URL_A   "http://www.example.com/service"

HeaderB.h

#define URL_AC          @URL_A

这里出现错误,程序中出现意外的“@”。扩展自宏 @URL_AC

模块已启用,如 this question 中的回答。

在 .m 文件中用作,

NSURL * url = [NSURL URLWithString:URL_AC];

偶数声明

#define URL_AC      @"https://www.example.com/service?format=json"

得到“使用未声明的标识符 URL_AC”编译器错误。

【问题讨论】:

请说明URL_AC 的使用情况。 已在问题中更新。 所以你有两个错误? 我有两种不同的定义形式。第一个带有 C 字符串的形式得到@错误,第二个形式直接 @"" 定义我得到了第二个错误。所以我猜测试目标可能对字符串文字有一种误解! 您需要使用stringification 才能在另一个宏中引用一个宏。第二个错误似乎表明HeaderB.h没有被导入。 【参考方案1】:

我发现了问题。 “定义”有一些#ifdef 宏。这是使用build settings 中的preprocessor declaration 控制的。在我的测试目标中,它没有被定义。当我定义它时,编译器会得到“定义”并且所有错误都消失了。

#if defined(TEST0)
#define URL0    "http://www.example.com"

#elif defined(TEST1)
#define URL1    "http://www.example2.com"

#endif

【讨论】:

以上是关于测试目标中的程序中出现意外的“@”的主要内容,如果未能解决你的问题,请参考以下文章

office出现外部数据库驱动程序中的意外错误解决方法

Jest 测试中出现意外字符“@”

Worklight 5.0.6 - 混合应用程序在不同 Android 手机中的意外行为

iOS UITesting 错误

arcgis10.3挂接表格出现连接到数据库失败 常规功能故障 外部数据库驱动程序意外错误 怎解决

无法读取 JSON:字段名称中出现意外的输入结束