extern关键字用法
时间: 2023-05-29 10:02:30 浏览: 70
extern关键字有以下用法:
1. 声明变量的存储类型为外部,表示该变量并非在本文件中定义,而是在其他文件中定义。
例:extern int i;
2. 声明函数的存储类型为外部,表示该函数并非在本文件中定义,而是在其他文件中定义。
例:extern int fun();
3. 在C++中,extern也可以用于在另一个文件中声明全局变量,以便在当前文件中使用,不必在当前文件中重新定义。
例:extern int i;
4. 在C++中,extern也可以用于声明全局变量或函数,以便在嵌套的代码块中使用。
例:extern int i;
if (true) {
extern int j;
int k = j + 1;
}
注意:extern关键字只是对声明的变量或函数进行说明,而不是定义,因此不需要分配存储空间。定义变量或函数时不需要使用extern关键字。
相关问题
C# Extern关键字
Extern关键字在C#中用于声明外部方法。它指示编译器该方法的实现不在当前C#项目中,而是在外部的非托管代码中。
使用Extern关键字可以将C#代码与其他编程语言(如C++)编写的库进行交互。通过声明外部方法,我们可以在C#中调用这些非托管代码中的函数。
外部方法的声明通常位于类或结构体的内部,并且使用extern关键字进行修饰。例如:
```csharp
class MyClass
{
[DllImport("user32.dll")]
public static extern int MessageBox(IntPtr hWnd, string text, string caption, uint type);
// 其他方法和成员...
}
```
在上面的示例中,使用extern关键字声明了一个名为MessageBox的外部方法。该方法在user32.dll库中定义,并且可以通过调用该方法来显示一个消息框。
请注意,为了使用extern关键字声明外部方法,我们需要在代码中引入System.Runtime.InteropServices命名空间,使用DllImport特性指定外部库的名称。
需要注意的是,extern关键字只能用于声明方法,而不能用于字段、属性或事件。此外,由于外部方法的实现不在C#项目中,因此需要确保所引用的外部库存在并可用于程序运行。
c++ extern关键字
extern关键字在C语言中有多种用法。
第一种用法是在变量的声明中使用extern关键字,表示该变量在其他源文件中定义。例如,extern const char Buffer[];表示Buffer变量在其他文件中定义,并可以在当前文件中使用。
第二种用法是在函数的声明中使用extern关键字,表示该函数可能在其他源文件中定义。例如,extern int f();表示f函数可能在其他文件中定义,并可以在当前文件中使用。
第三种用法是在C++中使用extern "C"来指定函数的链接方式。这是为了解决C++函数重载带来的函数名和参数不同导致链接错误的问题。通过extern "C"修饰函数,告诉编译器保持函数名称不变,不生成用于链接的中间函数名。这通常在C++代码中与C函数交互时使用。
总而言之,extern关键字在C语言中用于声明变量和函数的链接方式,以及在C++中用于修饰函数以保持函数名称不变。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [C++全局变量的定义和声明](https://blog.csdn.net/webzhuce/article/details/38899635)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C/C++种extern关键字详解](https://blog.csdn.net/weixin_38218095/article/details/96473556)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]