1 つのオプションは、宛先バッファーに関する情報を持たない文字列関数の使用を単純に禁止することです。次のような一連のマクロを、一般的に含まれるヘッダーに含めると役立ちます。
#define strcpy strcpy_is_banned_use_strlcpy
#define strcat strcat_is_banned_use_strlcat
#define strncpy strncpy_is_banned_use_strlcpy
#define strncat strncat_is_banned_use_strlcat
#define sprintf sprintf_is_banned_use_snprintf
そのため、「禁止された」ルーチンを使用しようとすると、リンカ エラーが発生し、代わりに何を使用すべきかが示されます。MSVC は、_CRT_SECURE_NO_DEPRECATE
.
この手法の欠点は、既存のコードが大量にある場合、新しいより安全なルーチンを使用するように物事を移行するのが非常に面倒になる可能性があることです。危険と見なされる機能を取り除くまで、気が狂ってしまう可能性があります。