2014-10-31 92 views
4

当我使-Weverything定制编译器标志和模块在Xcode的支持,它告诉我切换到使用模块 - 所以我改变这种类型的事情:如何确定Xcode是否支持模块?

#import <Foundation/Foundation.h> 

这样:

@import Foundation; 

...一切都很好,直到有人稍后将其中一个类导入其未启用模块的旧项目中,此时他们必须将@import恢复为#import。

我的问题是这样的:是否有可能将这些包装在某种预处理器宏中以在编译时挑出正确的宏?就是我希望的

例子:

#ifdef MODULES_SUPPORTED 
    @import Foundation; 
#else 
    #import <Foundation/Foundation.h> 
#endif 

感谢

Jase

回答

3

这是一个老问题,但要知道如何做到这一点也需要。这里是一个办法做到这一点:

#ifdef __has_feature(modules) 
    @import Foundation; 
#else 
    #import <Foundation/Foundation.h> 
#endif 

编号:CLANG LANGUAGE EXTENSIONS

+0

完美。这样可行! – 2016-07-06 16:54:57