c语言extern可不可以声明方法
时间: 2024-10-23 07:07:34 浏览: 14
在C语言中,`extern`关键字主要用于声明变量或者函数的地址,而不是用来声明方法,因为C语言本身并没有像面向对象的语言那样有明确的"方法"的概念。`extern`的作用是在不同的源文件中共享某个变量或者函数的定义,使得它们可以在需要的地方被引用。
如果你想要在C语言中实现某种类似于方法的功能,通常会通过结构体或类、指针以及回调函数来间接模拟。例如,你可以创建一个指向函数的指针作为结构体成员,这个可以看作是"方法"的替代形式。
```c
typedef void (*MethodType)(void*);
// 定义一个包含方法的结构体
struct MyClass {
MethodType myFunction;
};
// 在另一个源文件中,extern声明这个方法的地址
extern void doSomething(void);
// 实际定义doSomething函数
void doSomething(void) {
// 这里放置你需要的方法实现
}
// 现在,你在其他地方就可以这样使用它
MyClass obj;
obj.myFunction = &doSomething; // 将函数地址赋给方法
```
相关问题
extern c语言中多个文件用法
在 C 语言中,可以通过 extern 关键字来声明一个全局变量或函数在另一个文件中定义,以便在当前文件中使用。
具体用法如下:
1. 在需要使用全局变量或函数的文件中,使用 extern 关键字声明该变量或函数:
```
extern int global_var; // 声明全局变量
extern void func(); // 声明函数
```
2. 在定义全局变量或函数的文件中,不需要使用 extern 关键字,直接定义即可:
```
int global_var = 0; // 定义全局变量
void func() { // 定义函数
// function body
}
```
3. 将上述两个文件编译为目标文件(例如 file1.o 和 file2.o),然后将它们链接起来生成可执行文件:
```
gcc -c file1.c -o file1.o
gcc -c file2.c -o file2.o
gcc file1.o file2.o -o program
```
4. 在程序中使用全局变量或函数:
```
#include <stdio.h>
extern int global_var;
extern void func();
int main() {
printf("global_var = %d\n", global_var);
func();
return 0;
}
```
注意,在使用 extern 声明全局变量时,只是告诉编译器该变量在别的文件中已经定义了,但是并没有分配空间。因此,在定义全局变量时,需要在其中一个文件中进行实际的分配空间操作,否则链接时会出错。例如:
```
// file1.c
#include <stdio.h>
int global_var; // 定义全局变量,并分配空间
int main() {
global_var = 42; // 修改全局变量的值
printf("global_var = %d\n", global_var);
return 0;
}
// file2.c
#include <stdio.h>
extern int global_var; // 声明全局变量
void func() { // 定义函数
printf("global_var = %d\n", global_var);
}
```
阅读全文