是否可以定义一个C ++类方法,该方法可以干净地编译,但在使用时会以类似于未实现的C库函数的方式生成警告消息?类似的东西:
int MyClass::frobnicate()
{
link_warning(frobnicate, "function not implemented");
return 0;
}
__attribute__((deprecated))
或更新的[[deprecated]]
attribure具有正确的功能(如果没有其他选项,我会使用它),但我想避免告诉用户frobnicate
由于XYZ原因,它实际上无法实现时被弃用。
C代码示例(来自glibc):
#define link_warning(symbol, msg) \
__make_section_unallocated (".gnu.warning." #symbol) \
static const char __evoke_link_warning_##symbol[] \
__attribute__ ((used, section (".gnu.warning." #symbol __sec_comment))) \
= msg;
此宏给出的警告如下所示(here's使用它的代码示例):
/path/to/file.o:在函数`symbol'中:
/path/to/file.c:line:warning:msg
一个幼稚的link_warning(MyClass::frobnicate, "function not implemented")
似乎不起作用,找出并使用装饰名称似乎很容易和不可移植(我不确定它是否真的有用)。