我正在(共同)研究一个必须针对许多不同编译器和编译器版本的库。例如,我们需要支持 Visual Studio 2005 到 2015 以及其他一些(ICC、Clang、GCC,...)。
现在大多数新编译器都添加了新功能,其中一些可能非常有用。事实上,它们非常有用,我们想默认打开它们。但是我们仍然希望保持与旧编译器的兼容性。
例如:
Visual Studio 2015 引入了控制流防护,有助于防止对库的某些攻击。然而,对于早期的编译器版本,这显然是一个未知的选项。
那么我们如何设置我们的 .vc(x)proj 文件以默认启用新功能(例如控制流保护),同时在旧编译器上无警告(不知道新功能)?还是不可能?