[Error] redeclaration of 'i' with no linkage
时间: 2024-09-16 13:03:39 浏览: 198
在C/C++编程中,"redeclaration of 'i' with no linkage" 错误通常意味着你在程序的不同作用域中多次声明了同名的变量 'i',但是没有提供外部链接(extern)。在一个作用域内,全局变量、静态局部变量以及函数内的局部变量都各自拥有独立的作用域,如果在同一作用域内再次声明一个已经存在的未链接变量,就会导致这样的错误。
例如:
```c
int i;
void func() {
int i; // 在这里,我们又声明了一个局部变量 i,但没有 extern 关键字表示它是全局的
// ...
}
// 或者
int main() {
int i;
static int i; // 在main函数内部,静态局部变量 i 和之前的全局变量 i 也构成了重复声明
// ...
}
```
要修复此错误,你需要确保每个变量在整个程序范围内只声明一次,并且如果需要在不同作用域间共享变量,应该使用 extern 关键字声明全局变量。例如:
```c
int global_i; // 正确的全局变量声明
void func() {
extern int global_i; // 明确告知这是一个外部引用
int local_i; // 现在local_i是一个新的局部变量
// ...
}
int main() {
global_i = 10; // 可以在main中访问全局变量
// ...
}
```
相关问题
redeclaration of with no linkage
redeclaration of with no linkage 意思是“无链接的重新声明”,通常出现在 C 或 C++ 语言中。它表示在同一作用域内重复声明了一个变量或函数,但是这个变量或函数没有外部链接性,也就是说它只能在当前文件内使用,不能被其他文件引用。这种错误通常会导致编译错误或链接错误。
[Error] redeclaration of 'i' with no linkage是什么意思
这个错误提示意味着在同一作用域内多次声明了一个变量或函数。通常情况下,每个变量或函数只能在其作用域内被声明一次。如果你在同一作用域内多次声明一个变量或函数,编译器就会抛出这个错误。这个错误提示还可能意味着你在不同的源文件中使用了同样的全局变量或函数名,这也会导致链接时出错。要解决这个错误,你可以删除重复的声明或将其移动到正确的作用域内。
阅读全文
相关推荐

















