【问题标题】:Accessing Xcode LLVM Processor Macros访问 Xcode LLVM 处理器宏
【发布时间】:2016-04-29 21:13:41
【问题描述】:

在“构建设置”选项卡下的“Apple LLVM 7.0 - 预处理”部分中,我将预处理器宏定义为:

HUBNAME=myhub

在我的代码中,我试图将 HUBNAME 的值引用为字符串:

SBNotificationHub* hub = [[SBNotificationHub alloc] initWithConnectionString:HUBLISTENACCESS notificationHubPath:HUBNAME];

但 Xcode 认为 'myhub' 是我的变量的名称:

使用未声明的标识符“myhub”

有人可以帮我弄清楚如何将“myhub”作为字符串访问吗?

【问题讨论】:

    标签: ios xcode c-preprocessor


    【解决方案1】:

    类似TO_STR(arg)=#arg HUBNAME=TO_STR("myhub")? (或者只是 TO_STR(myhub) 不带引号。)

    NSLog(@"%s", HUBNAME); // SO36947532[13085:4401425] myhub
    

    来自 GNU:

    3.4 Stringification

    有时您可能希望将宏参数转换为字符串 持续的。参数不会在字符串常量中被替换,但是你 可以改用# 预处理运算符。当一个宏参数 与前导 # 一起使用,预处理器将其替换为 实际参数的文字文本,转换为字符串常量。 与普通参数替换不同,参数不是 首先进行宏观扩展。这称为字符串化

    【讨论】:

    • 谢谢!像魅力一样工作。需要注意的一件事是,我在从我的代码访问宏时使用了“@HUBNAME”。
    • 您有机会解决相关问题:stackoverflow.com/questions/36988067/…
    • 我目前在东京某处有几天没有电脑。如果没有人,我下周去看看。
    猜你喜欢
    • 1970-01-01
    • 2016-08-27
    • 2010-09-19
    • 1970-01-01
    • 2017-04-04
    • 2019-05-07
    • 2011-03-16
    • 1970-01-01
    • 2015-02-26
    相关资源
    最近更新 更多