测试目标中的程序中出现意外的“@”
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
【讨论】:
以上是关于测试目标中的程序中出现意外的“@”的主要内容,如果未能解决你的问题,请参考以下文章
Worklight 5.0.6 - 混合应用程序在不同 Android 手机中的意外行为