extern外部调用
时间: 2023-08-25 07:06:17 浏览: 40
回答: extern关键字用于声明一个变量或函数是在其他文件中定义的。它的作用是扩大变量或函数的作用域,使其可以在当前文件中进行外部调用。在C语言中,extern只能修饰全局变量,不能修饰局部变量。局部变量在运行时才在栈部分分配内存。[1]在使用extern进行外部调用时,可以在一个文件中定义变量或函数,然后在其他文件中使用extern关键字进行声明,以便在其他文件中使用该变量或函数。例如,可以在一个C文件中定义变量int a,然后在头文件中使用extern int a进行声明,再在其他文件中包含该头文件,就可以在其他文件中使用该变量a了。[2]在C++中,extern关键字的用法与C语言类似。可以在一个文件中定义变量或函数,然后在其他文件中使用extern关键字进行声明,以便在其他文件中使用该变量或函数。例如,在一个C++文件中定义函数void func_1(),然后在另一个文件中使用extern void func_1()进行声明,就可以在该文件中调用函数func_1了。[3]
相关问题
c++extern声明外部函数
在C++中,使用extern声明可以在一个文件中调用其他文件中定义的函数,或者说将该函数的作用域扩展到本文件。extern声明的形式是在函数原型基础上加上关键字extern。在程序中经常需要调用其他文件中的外部函数,为了方便编程,C++允许在声明函数时省略extern关键字。例如,在主文件中可以使用extern声明来调用其他文件中定义的函数。\[1\]
举个例子,假设有一个test.cpp文件中定义了一个函数,我们可以在主文件中使用extern声明来调用这个函数。首先,在test.h文件中声明外部函数,然后在test.cpp文件中定义外部函数并进行初始化。最后,在主文件中使用extern关键字来调用外部函数。\[2\]
另外,C++中还有内部函数,也称为静态函数。使用内部函数可以使函数只局限于所在文件,如果在不同的文件中有同名的内部函数,它们互不干扰。通常将只能由同一文件使用的函数和外部变量放在一个文件中,并在它们前面加上static关键字使之局部化,其他文件不能引用这些函数和变量。\[3\]
#### 引用[.reference_title]
- *1* *3* [简单讲解C++的内部和外部函数以及宏的定义](https://blog.csdn.net/weixin_39663258/article/details/117269869)[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_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [C++声明extern变量和extern函数的用法](https://blog.csdn.net/wenchm/article/details/130765956)[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_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
怎么在外部调用结构体
在外部调用结构体的方法有两种。第一种是将结构体定义在头文件中,并使用extern关键字在其他文件中进行声明,然后就可以在其他文件中使用该结构体。第二种是通过函数的参数将结构体传递到其他文件中进行调用。
方法一:
将结构体定义在头文件中,并使用extern关键字在其他文件中进行声明。具体步骤如下:
1. 在time.h头文件中定义结构体,并使用extern关键字进行声明。例如:typedef struct Time { int hour; int minute; } Time;
2. 在time.c文件中定义结构体的具体实现。例如:Time currentTime = { 12, 30 };
3. 在其他需要使用结构体的文件中包含time.h头文件,并使用extern关键字进行声明。例如:extern Time currentTime;
4. 现在就可以在其他文件中使用currentTime结构体了。
方法二:
通过函数的参数将结构体传递到其他文件中进行调用。具体步骤如下:
1. 在time.h头文件中定义结构体。例如:typedef struct Time { int hour; int minute; } Time;
2. 在其他文件中定义一个函数,该函数的参数为结构体类型。例如:void printTime(Time time) { printf("The current time is %d:%d\n", time.hour, time.minute); }
3. 在需要调用结构体的文件中,包含time.h头文件,并调用定义的函数并传递结构体实例作为参数。例如:Time currentTime = { 12, 30 }; printTime(currentTime);