c++ - block 范围内 C++11 函数声明的用例?

标签 c++ c++11

看来我可以在 block 范围内声明一个函数:

int main()
{
    void f(); // OK
}

但是我无法定义它:

int main()
{
    void f() {}; // ERROR
}

我的问题是, block 范围内的函数声明有什么用?什么是用例?

最佳答案

它有时是声明和调用外部链接函数的快捷方式,该函数本身并未在 header 中公开定义。例如,假设您正在链接一个 C 库,您知道它提供了一个 LibDebugOn(int) 调用,但没有在 header 中定义它。它可以是在一个地方声明和调用它的快捷方式:

void myFunc() {
  // call "Lib" but turn on debugging via hidden API
  extern "C" void LibDebugOn(int); // declare hidden C-linked function
  LibDebugOn(1);  // call it
  // do something with the library here...
  LibDebugOn(0);  // turn off lib debugging now
}

公平地说,这通常只对一次性快速破解是值得的,而不是值得鼓励的事情。

关于c++ - block 范围内 C++11 函数声明的用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16704256/

相关文章:

C++ 从数组中取出前 n 个元素

c++11 - 编译 gRPC 时出现编译错误, `‘-std=c++11’ 对 C++/ObjC++ 有效,但对 C 无效

c++ - 在复制构造函数中重新绑定(bind)函数指针

c++ - C++ 中 char 数组末尾的空终止符

c++ - 使用挂起的 read_async_some 关闭 boost::asio::serial_port

c++ - 从目标文件中查找函数的所有调用者

c++ - 成员函数引用限定返回类型

c++ - 类外的类函数模板定义

c++ - 我可以重置 wxWidgets 菜单中的复选框状态吗?

c++ - `push_back` 与 `emplace_back` 标志警告