Cha*_*les 4 c gcc deprecated deprecation-warning
我正在开发一个扩展现有库的C 项目(通过标准includes)。随着库的开发,许多功能已被弃用。但是,这仅在文档中显示;代码不会以任何方式标记此状态。
每当我尝试使用这些已弃用的函数之一时,我想让我的项目警告我,特别是因为该库正在积极开发中,所以我可能在弃用之前使用了某些东西,而在其状态发生变化时却没有注意到。有什么办法可以在 gcc 下做到这一点,而不是修改库代码本身?(一方面,它经常变化,以致保留具有 gcc 属性的本地版本是不切实际的。)
这可能吗?似乎 Visual Studio 可以用它的
#pragma deprecated(X,Y,...)
Run Code Online (Sandbox Code Playgroud)
语法,但我认为 gcc 不支持这个,只是
__attribute__ ((deprecated))
Run Code Online (Sandbox Code Playgroud)
在函数声明本身上。
从工作项目中提取
#ifdef __GNUC__
#define DEPRECATED(X) X __attribute__((deprecated))
#elif defined(_MSC_VER)
#define DEPRECATED(X) __declspec(deprecated) X
#else
#define DEPRECATED(X) X
#endif
Run Code Online (Sandbox Code Playgroud)
请参阅http://msdn.microsoft.com/en-us/library/dabb5z75.aspx和http://msdn.microsoft.com/en-us/library/044swk7y.aspx
然后
DEPRECATED(void foo(int a, int b, int c));
Run Code Online (Sandbox Code Playgroud)