在 Objective-C/Xcode 中使用预处理器宏
我正在设置一些宏用于记录目的。
#define LOG_NETWORK_DEBUG(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Network",2,__VA_ARGS__)
#define LOG_NETWORK_INFO(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Network",1,__VA_ARGS__)
#define LOG_NETWORK_ERROR(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Network",0,__VA_ARGS__)
#define LOG_MEDIA_DEBUG(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Media",2,__VA_ARGS__)
#define LOG_MEDIA_INFO(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Media",1,__VA_ARGS__)
#define LOG_MEDIA_ERROR(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Media",0,__VA_ARGS__)
但是,由于我的代码当前充斥着 NSLog 调用,因此我想将 NSLog
调用转移到 LogMessageF
调用。 (直到我有时间将所有代码迁移到上面的宏) 我的 iOS 项目目前由 2 个子项目组成:网络、媒体。
我希望每个 NSLog 调用都转换为适当的宏。 (媒体项目中的 NSLog 调用将转换为 LOG_MEDIA_DEBUG)。
我考虑过在 Xcode 中为每个名为 PROJ_NAME 的项目设置一个预处理器宏,其中将包含项目名称。
我的问题是如何使用该宏?我想做这样的事情:
#define NSLog(...) LOG_$PROJ_NAME_DEBUG(__VA_ARGS__)
I'm setting up some macros for Logging purposes.
#define LOG_NETWORK_DEBUG(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Network",2,__VA_ARGS__)
#define LOG_NETWORK_INFO(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Network",1,__VA_ARGS__)
#define LOG_NETWORK_ERROR(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Network",0,__VA_ARGS__)
#define LOG_MEDIA_DEBUG(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Media",2,__VA_ARGS__)
#define LOG_MEDIA_INFO(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Media",1,__VA_ARGS__)
#define LOG_MEDIA_ERROR(...) LogMessageF(__FILE__,__LINE__,__FUNCTION__,@"Media",0,__VA_ARGS__)
However, since my code is currently infested with with NSLog calls, I want to transfer the NSLog
calls to LogMessageF
calls. (till I have time to migrate all my code to above macros)
My project for iOS is currently comprised of 2 sub projects: Network, Media.
I want each NSLog calls to be converted to the appropriate Macro. (NSLog calls in the Media project would be converted to LOG_MEDIA_DEBUG).
I thought about setting a preprocessor macros in Xcode for each project called PROJ_NAME that will include the project name.
My question is how to use that Macro? I want to do something like this:
#define NSLog(...) LOG_$PROJ_NAME_DEBUG(__VA_ARGS__)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用(令牌串联)。 HELPER 宏用于在连接之前评估 PROJ_NAME 宏。
You can use (token concatenation). HELPER macro is used to evaluate PROJ_NAME macro before concatenation.