EXTERN(void) jpeg_fdct_8x4
JPP((DCTELEM * data, JSAMPARRAY sample_data, JDIMENSION start_col));
在这里,我有四个问题:
Extern(Void)的语法是什么意思?返回值无效?这是通常的语法吗?
我在第三方代码中看到非类成员函数,其中包含static关键字,inline关键字,no keyword和extern关键字。我知道static关键字将函数的范围限制在文件中。如果我使用“无关键字”会怎样?我是否必须在其他文件中使用extern才能使用该函数,或者在指定函数声明后我可以直接从另一个文件中调用该函数?
我是否只需要在C ++中使用extern来调用C语言接口?
内联函数的默认范围是什么?
答案 0 :(得分:2)
EXTERN(n)
是预处理程序定义,可在jmorecfg.h
中找到:
#define EXTERN(type) extern type
所以上面的陈述扩展到
extern void ...
对于C代码中的extern
,check out this answer.
如果我使用“无关键字”会怎样?
在这种情况下,范围不受限制。非静态全局函数的名称在所有编译单元中对链接器可见,这意味着如果不同的模块使用相同的函数名称,则会出现名称冲突。
3)我是否只需要在C ++中使用extern来调用C接口?
你可能会引用extern "C" {}
来指示编译器使用C调用约定。是的,您需要这个来从C ++调用外部C函数。
4)内联函数的默认范围是什么?
与未声明inline
的范围相同。
答案 1 :(得分:0)
C ++是一种区分大小写的语言。 “extern”关键字与“EXTERN”不同。它似乎正在初始化一个void函数。 您可以使用其他源文件中的函数,而无需使用extern关键字。例如在编写项目时,IDE将始终使用main()函数开始调试和编译。您可以在不使用extern的情况下在其他文件中声明和调用函数。