extern" C" static void *函数

时间:2016-07-18 23:58:04

标签: c++

在阅读了extern和static之后,我很困惑地遇到了下面一行的代码:

REACH
{
  "_id": "",
  "userEmai": "",
  "broadcastID": "",
  "reach": "",
  "count": 0,
  "type": "reach"
}

为什么这不会产生任何错误?

1 个答案:

答案 0 :(得分:2)

以下编译并似乎执行该行尝试执行的操作:

extern "C" {
  static void* foo(int* a){
    return foo1(int* a);
  }
}

我不确定为什么任何人都会想要这个。

“静态”表示foo()仅在文件范围内可用。

'extern“C”'影响链接器在导出时使用的函数的名称,以便在链接整个程序时可以从其他目标文件调用该函数。通常,当您要链接到目标文件时,使用它,从定义了foo()的C源构建,或者您想要定义foo()的位置,以便它可以由来自C的对象构建使用。

“静态”会导致foo()导出而不是,但是......所以很难看出它们是如何“帮助”的。

为什么 foo()会被声明的唯一方法是用于测试程序,其中有人决定尝试覆盖一个对象内的foo()的含义文件,因此将忽略来自不同文件的文件。

相关问题