Ger*_*ard 5 c macros warnings c-preprocessor
我的C代码有很多调用strcmp,strcpy这导致了各种各样的问题。我想将其迁移到strncmpandstrncpy但我现在无法更新所有代码。我想在使用函数的地方添加编译器警告。
以下强制替换#define strcmp(x,y) strncmp16(x,y,64),但问题仍然在代码中。
有没有办法添加一个,#warning以便代码仍然可以编译,但会给出不使用大小函数的警告。
它是一个大型代码库,必须在四种不同的编译器(GCC、IAR、GHS 和 VC)中进行编译。它是我们自己的C库,主要用于嵌入式系统。
编辑:我不想找到所有出现的情况。有数千种工具可用于查找和替换它们。我希望有一个警告,以便下次有人查看代码时,他们会评估并修复代码。
编辑: Strncmp 和 strncpy 有很多问题,我非常清楚这一点。我正在做出明智的决定。这些函数位于我们自己的C库中,而不仅仅是编译器C库中的默认函数。
虽然您可以使用 #define 来强制出现错误,但 C99 标准中没有机制(C11 中也可能没有)来强制发出警告。
如果您使用的是 gcc,则可以使用
__attribute_deprecated__
Run Code Online (Sandbox Code Playgroud)
将原型标记为已弃用,例如:
int strcmp(const char *, const char *) __attribute_deprecated__;
Run Code Online (Sandbox Code Playgroud)