在C++中,extern关键字用于指示一个变量或函数在其他文件中定义或声明。extern可以用于以下三种情况:
-
外部变量的声明:当在一个源文件中定义了一个全局变量,在另一个源文件中想要使用该全局变量时,需要在使用的源文件中声明该变量。这时可以在声明中使用extern关键字。例如:
// file1.cpp int global_var = 10; // file2.cpp extern int global_var; // 声明global_var,告诉编译器它在其他源文件中定义 void foo() { std::cout << global_var; }
-
外部函数的声明:当在一个源文件中定义了一个函数,在另一个源文件中想要调用该函数时,需要在使用的源文件中声明该函数。这时可以在声明中使用extern关键字。例如:
// file1.cpp void my_function() { std::cout << "Hello, world!"; } // file2.cpp extern void my_function(); // 声明my_function,告诉编译器它在其他源文件中定义 void foo() { my_function(); }
- 外部变量的定义:当在一个源文件中声明了一个全局变量,在另一个源文件中定义该变量并分配存储空间时,需要在定义中使用extern关键字。这时定义中不需要初始化变量,只需要指定类型和名称即可。例如:
// file1.cpp extern int global_var; // 声明global_var,告诉编译器它在其他源文件中定义 void foo() { std::cout << global_var; } // file2.cpp int global_var = 10; // 定义global_var,并分配存储空间
需要注意的是,extern关键字只是告诉编译器某个变量或函数在其他文件中定义或声明,而不是定义或声明它们。因此,extern关键字通常与声明一起使用,用于在一个源文件中引用另一个源文件中定义的变量或函数。
总之,extern关键字在C++中用于指示一个变量或函数在其他文件中定义或声明,是实现跨源文件编程的重要工具之一。