由于各种原因,我有一个函数需要部分实现,我想防止未来的用户(将来当我忘记我做过这件事时,以我的身份阅读(知道该函数不完整、有缺陷且未经测试。
选项n1仅添加注释// Warning this thing is partially implemented and will break randomly
然而,这不会创建编译时警告,所以,我不是一个粉丝。
选项n2是使用[[deprecated("reason")]]
,它具有引发编译警告的优点,但具有误导性,该函数没有被弃用,实际上与弃用相反,它是一个WIP,也许有一天会完全实现。
有其他选择吗?
[[deprecated]]
属性正是它的用途(强调矿(:
https://en.cppreference.com/w/cpp/language/attributes
[已弃用]
[不赞成("理由"(]
表示允许使用此属性声明的名称或实体,但由于某种原因不鼓励使用
您仍然可以使用该函数,您只会收到一条警告消息,您不应该依赖它的使用。
注意:MSVC违反了标准,并发出编译器错误(由于SDL标志默认打开(而不是警告。
标准C++中唯一适用于此的是[[deprecated("message")]]
属性。
GNU对于warning
消息有一个非标准函数属性:
警告("消息"(
如果在函数声明中使用此属性,并且对此类函数的调用未通过死代码消除或其他优化消除,则将诊断出包含消息的警告。这对于编译时检查非常有用,尤其是与__builtin_constant_p
和内联函数一起使用。虽然可以在.gnu.warning*
部分中用消息定义函数,但当使用此属性时,即使存在内联函数或不发出调试信息,问题也会更早诊断出来,并带有调用的确切位置。