4 ms·
The ban can be rolled out gradually by not including banned.h everywhere.
by jonathrg 5y ago
The ban can be rolled out gradually by not including banned.h everywhere.
- Someone1234 5y agoBut then you're undermining your own hard compile time check, wherein specific files or areas of the project could fall through the cracks and continue to used supposedly "banned" functions. I'd argue doing it globally but as warning would be a better alternative than doing it file by file.
- jonathrg 5y agoA warning would be nice, is there a way to implement that without changing the compiler though?
- shakna 5y agoSomething along these lines should work, for at least both of GCC and Clang: extern void banned() __attribute__((deprecated("This function is problematic"))); #define strcpy(...) strcpy(__VA_ARGS__); banned; Which would output something along the lines of: test.c:11:3: warning: 'banned' is deprecated: This function is problematic [-Wdeprecated-declarations] strcpy(x, y);
- yaur 5y agoMSVC does this, or at least did the last time I had to compile C code for windows. You should be able to do it with the preprocessor if you wanted to.