用extern调用函数和通过对象调用函数有什么区别
时间: 2023-12-02 07:02:22 浏览: 33
使用extern关键字调用函数和通过对象调用函数的区别与通过变量的方式类似。具体来说,使用extern声明一个函数可以让其他源文件中的代码访问该函数,而通过对象调用函数则是在当前作用域中访问该函数。
另外,使用extern关键字声明函数时,需要注意函数的返回值类型、参数列表和函数名必须和定义该函数的源文件中的声明一致,否则编译器会报错。而通过对象调用函数则不需要这些限制,只需要在当前作用域中声明函数即可。
总的来说,使用extern关键字可以更方便地实现不同源文件之间的函数共享,而通过对象调用函数则更适合在同一个源文件或作用域中使用。
相关问题
函数调用前加上extern
引用\[1\]中提到,函数调用前加上extern "C"的作用是告诉C++编译器,在这个函数调用处编译的时候不要给这个函数在符号表中改名。这样可以解决函数调用处和函数实现处的符号表函数名称不一致导致链接错误的问题。这个关键字只能用于对于C语言函数添加,如果对一个C++函数添加extern "C"会导致找不到这个C++函数实现。所以需要根据具体情况进行判断和使用。\[3\]
#### 引用[.reference_title]
- *1* *3* [C++调用C语言之extern “C“简析](https://blog.csdn.net/qq_40213093/article/details/123308029)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [C++ 头文件与Extern (外部函数调用)](https://blog.csdn.net/qq_42292831/article/details/100859757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
C源文件里面的函数声明用static和extern的区别是什么
在C源文件中,函数声明中的`static`和`extern`关键字也都是用来描述函数的存储类别的。
`static`存储类别的函数声明表示该函数仅在当前源文件中可见,即该函数只能在当前源文件中被调用,无法被其他源文件调用。这种函数通常用于实现库中的私有函数或者内部工具函数。例如:
```
static int add(int x, int y) {
return x + y;
}
```
`extern`存储类别的函数声明表示该函数在其他源文件中定义,当前源文件只是引用该函数,而不是定义该函数。这种函数通常用于声明库或者模块中的公共函数,以便其他源文件可以使用该函数。例如:
```
extern int printf(const char *format, ...);
```
总的来说,`static`和`extern`关键字用来描述函数的可见性和链接性,对于源文件中的函数声明来说,它们的作用是告诉编译器如何处理函数的存储和链接。但需要注意的是,源文件中的函数声明如果没有指定存储类别,则默认为`extern`。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)