我想标记错误代码(按照 GSL 的建议),最好的方法是什么?例如,给定下面的函数 foo (不是我自己可以轻松解决这个问题的最佳示例)。
void foo(std::string& s){
std::cout << s;
}
我确实想到了三个想法。这个标志的优点(缺点)是什么?
1. 仅评论//GSL::Con.2 s is read only,bla bla, ...
void foo(std::string& s){ //...
2.宏+静态断言
#ifdef GSL_FLAGS
#define NON_CONST_READ_ONLY_PARAMETER \
static_assert(false,"GSL::Con.2 is bad because of bla, bla");
#else
#define NON_CONST_READ_ONLY_PARAMETER
#endif
//elsewhere
NON_CONST_READ_ONLY_PARAMETER
void foo(std::string& s){ //...
3. 编译器警告
#define DO_PRAGMA(x) _Pragma (#x)
#define NON_CONST_READ_ONLY_PARAMETER DO_PRAGMA(message ("GSL:: ..."))