我有一个大型代码库,它使用了许多不安全的函数,比如gmtime和strtok.我不想尝试搜索代码库并替换这些代码库,而是让编译器在看到它们时发出警告或错误(向维护开发人员强调问题).这可能与GCC有关吗?
我已经知道了__attribute__((deprecated)),但AFAIK我不能使用它,因为我无法控制声明这些函数的头文件.
MSa*_*ers 12
创建自定义标头deprecated.h.在那里,创建自己的包装函数,deprecated_strtok()只需调用strtok.标记那些__attribute__((deprecated)).低于这些定义,#define strtok deprecated_strtok.最后,使用-include deprecated.h
在源文件中尝试这个,最近有一个gcc,它应该避免开发人员使用这两个函数.
#pragma GCC poison gmtime
#pragma GCC poison strtok
Run Code Online (Sandbox Code Playgroud)
它的缺点是它只对一个编译单元有效.如果你使用预编译的头文件(如果你的项目很大,你肯定会这样做),你可以把它们放在那里.至少这个解决方案不涉及在系统头中装饰函数声明并在编译时工作.
毒药可能有点困难,因为它产生错误而不是警告.有谁知道如何削弱它?至少它是一种强制执行DO NOT USE FUNCTION xxx策略的好方法.
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |