Cyp*_*ian 2 macros objective-c conditional-compilation ios
你能使用静态库中定义的宏吗?
我有自己的调试宏TWDEBUG,我在一个我创建用于共享的静态库中使用.如果我将静态库导入到我的新项目并使用它,编译器似乎无法识别它.我确实将预处理器宏设置为TWDEBUGand Other C flags和Other C++ flagsto -TWDEBUG,但是当我运行代码时,ifdef宏不会被执行.
宏在编译时进行评估.因此,在构建静态库时,它们的值将被冻结.对于调试语句,这通常意味着它们被省略而不是构建库的一部分.
如果稍后将静态库添加到项目,则可以更改宏的值.但它不会对静态库产生任何影响,因为它不再编译.缺少调试语句.
更新:
因此,为了实现调试选项,我看到两个选项:
您可以使用全局变量和正确的ifs来打开和关闭调试,而不是使用宏和ifdef.其他开发人员可以使用API(全局函数)来设置调试级别,以便隐藏全局变量.
从相同的源代码创建两个静态库,一个启用调试以用于开发目的,另一个禁用调试以供生产使用.如果XCode可以在两个库之间自动切换,则此选项可能是可行的.目前,我不知道你将如何配置.