2
EXTERN(void) jpeg_fdct_8x4
JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));

在这里,我有四个问题:

  1. 语法 Extern(Void) 是什么意思?那个返回值是无效的?它是一种通常的语法吗?

  2. 我在第三方代码中看到非类成员函数带有static关键字、inline关键字、no关键字和extern关键字。我知道 static 关键字将函数的范围限制在文件中。如果我使用“无关键字”会发生什么?我是否必须在其他文件中使用 extern 才能使用该函数,或者我可以在指定函数声明后直接从另一个文件调用该函数?

  3. 我是否需要 C++ 中的 extern 才能使用 C 调用接口?

  4. 内联函数的默认范围是什么?

4

2 回答 2

2

EXTERN(n)是一个预处理器定义,可在以下位置找到jmorecfg.h

  #define EXTERN(type)            extern type

所以上面的语句扩展为

  extern void ...

有关externC 代码的文章,请查看此答案。

如果我使用“无关键字”会发生什么?

在这种情况下,范围不受限制。非静态全局函数的名称对所有编译单元的链接器都是可见的,这意味着如果不同的模块使用相同的函数名称,则会出现名称冲突。

3) 我是否只需要 C++ 中的 extern 才能使用 C 调用接口?

您大概是指extern "C" {}哪个指示编译器使用 C 调用约定。是的,您需要它来从 C++ 调用外部 C 函数。

4) 内联函数的默认范围是什么?

与未声明它们的范围相同inline

于 2012-08-27T05:00:15.773 回答
0

C++ 是一种区分大小写的语言。“extern”关键字与“EXTERN”不同。它似乎正在初始化一个 void 函数。您可以使用其他源文件中的函数,而无需使用 extern 关键字。例如,当您编写项目时,IDE 将始终使用 main() 函数开始调试和编译。您可以在其他文件中声明和调用函数,而无需使用 extern。

于 2016-03-13T20:37:15.977 回答