是否有相当于C ++的link_warning(符号)?

时间:2018-01-20 22:35:03

标签: c++ gcc linker-warning

是否可以定义一个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")似乎不起作用,找出并使用装饰名称似乎很容易和不可移植(我不确定它是否真的有用)。

0 个答案:

没有答案