C++ 目标-C/C++;常数
编辑:我的例子可能造成了一些混乱。我更改了下面的示例,以反映我想要实现的目标。希望这更清楚 我试图在objective-c代码中定义一个常量。我正在使用标准定义来实现这一点。例如:C++ 目标-C/C++;常数,c++,objective-c,constants,C++,Objective C,Constants,编辑:我的例子可能造成了一些混乱。我更改了下面的示例,以反映我想要实现的目标。希望这更清楚 我试图在objective-c代码中定义一个常量。我正在使用标准定义来实现这一点。例如: #define bluh "a" 我想定义另一个像这样的常数 #define blah bluh +@"b" 编译器抛出一个错误(正确地说是这样的)“二进制+的操作数无效”。我怎样才能让它工作?谢谢你的帮助 我也尝试过这样的Objective-C方法: NSString *const A =@"a"; NSStr
#define bluh "a"
我想定义另一个像这样的常数
#define blah bluh +@"b"
编译器抛出一个错误(正确地说是这样的)“二进制+的操作数无效”。我怎样才能让它工作?谢谢你的帮助
我也尝试过这样的Objective-C方法:
NSString *const A =@"a";
NSString *const B = [NSString stringWithFormat:@"%@%@",A,@"b"];
但这给了我另一个错误“初始值设定项元素不是常量”
任何帮助都将不胜感激
欢呼,
< P>我不知道C++中的目标C,相邻字符串文字是串联的,所以使用它是足够的: #define blah bluh "b" #定义废话“b”顺便说一句,标准做法是尽可能使用大写作为预处理器定义,而不是出于其他目的,最大限度地减少意外替换的可能性。在标准c/c++中,您可以通过将文本字符串彼此相邻来连接,例如,
“字符串一-”字符串二将变为“字符串一字符串二”
在编译器按自己的方式处理之后
不确定这是否适用于一开始使用的“@”符号,但请尝试执行以下操作:
#define bluh "a"
#define blah bluh @"b"
没有Objy-C的很多经验,但希望他们能保持这一部分的互操作。
我不介意它是C++,但是这个解决方案是有效的。谢谢史蒂芬。“C++程序中的任何地方——完全独立于任何预处理器使用——C++编译器将连接文字。例如,所有有效的C代码都是有效的Objective-C代码,并且行为是相同的。语言Objective-C是对C的一个难以置信的最小扩展。也就是说,提问者希望完全按照你的建议去做,但没有@
符号。在Objective-C中,如果你使用@前缀,它也可以工作@“1”“2”“3”与@“123”相同。