将库中的函数标记为已弃用

时间:2014-05-15 18:55:28

标签: c gcc deprecated deprecation-warning

我正在使用C扩展an existing library的项目(通过标准include)。随着库的发展,许多功能都被弃用了。但是,这仅在文档中显示;代码不会以任何方式标记此状态。

每当我尝试使用其中一个已弃用的函数时,我想让我的项目发出警告,特别是因为库正处于活动开发状态,所以我可能在弃用之前使用过某些东西,而在状态发生变化时却没有注意到。有没有什么方法可以在gcc下做到这一点,没有修改库代码本身? (首先,它经常变化,使用gcc属性保留本地版本是不切实际的。)

这可能吗?看起来Visual Studio可以用它的

来做到这一点
#pragma deprecated(X,Y,...)

语法,但我不认为gcc支持这个,只是

__attribute__ ((deprecated))

关于函数声明本身。

1 个答案:

答案 0 :(得分:4)

从工作项目中拉出来

#ifdef __GNUC__
#define DEPRECATED(X) X __attribute__((deprecated))
#elif defined(_MSC_VER)
#define DEPRECATED(X) __declspec(deprecated) X
#else
#define DEPRECATED(X) X
#endif

请参阅http://msdn.microsoft.com/en-us/library/dabb5z75.aspxhttp://msdn.microsoft.com/en-us/library/044swk7y.aspx

然后

DEPRECATED(void foo(int a, int b, int c));