SEO基础学习交流社群

C语言undeclared identifier是什么意思?

2158 2

C语言是一门通用计算机编程语言,应用广泛。有时运行后出现错误提示为undeclared identifier,那么这是什么意思,遇到undeclared identifier怎么解决?

undeclared identifier

一、undeclared identifier是什么意思

undeclared identifier即未声明的标识符,是C语言中一种报错提示。当编译器找不到标识符的声明时,就会出现undeclared identifier错误。导致此错误的可能原因有很多,一般是使用的变量或者函数没有定义、变量拼写错误、声明变量的标头未包含在文件中或者是定义的时候和调用的时候不一致导致的。

二、C语言标识符是什么意思

在编程语言中,标识符是用户编程时使用的名字,变量、常量、函数、语句块都有名字。是用来标识某个实体的一个符号,是对变量名、函数名、标号和其他各种用户定义的对象命名。

C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。

三、undeclared identifier错误产生原因

undeclared identifier主要是由于在使用变量的时候发现没有定义和说明,其实就是编译器不认识这个标识符。

在进行c语言编程时,想要调用库函数,需要把对应的头文件包含进来,比如sin()、cos()、等数学函数,它们的头文件是math.h,在调用sin()或者cos()函数的时候,需要在代码前面加一句#include<math.h>。

四、如何修复 C++ 中的“使用未声明的标识符”编译错误

1、变量未声明

当使用变量而不声明时,就会出现undeclared identifier错误,解决方法是在使用它之前声明变量,例如:

#include<iostream>
using namespace std;
int main(){
    x=x+1;
    cout<<x;
    return 0;
}
//这段代码会给我们错误
//解决这个问题:
#include<iostream>
using namespace std;
int main(){
    int x=0; //使用x前先声明
    x=x+1;
    cout<<x;
    return 0;
}


2、拼写错误的变量名

有时在编写代码时我们可能会拼错变量名,这是一种常见的错误类型。要解决此问题,只需检查你使用的变量的每个实例并确保其拼写正确。例如:

#include<iostream> 
using namespace std; 
int main(){ 
    int abx=0;
    abx=abs+1; //abx 拼写错误
    cout<<abx; 
    return 0; 
}
 //这段代码会给我们错误 
//解决这个问题:
/#include<iostream> 
using namespace std; 
int main(){ 
    int abx=0;
    abx=abx+1; 
    cout<<abx; 
    return 0; 
}


3、超出范围变量

如果我们尝试使用超出其范围的变量,那么也会发生undeclared identifier错误,因为该变量仍未声明超出其范围。为避免这种情况,请确保你仅在其范围内使用变量。例如:

#include<iostream> 
using namespace std; 
int main(){ 
    int abx=0; 
    for(int i=0;i<5;i++){
        abx++;      //i 只在这个范围内声明
    }
    cout<<abx*i; //这里没有为外部函数声明i
    return 0;  
} 
//这段代码会给我们错误 
//解决这个问题:

#include<iostream> 
using namespace std; 
int main(){ 
    int abx=0,i=0; //i 是为 main 函数声明的
    for(i;i<5;i++){
        abx++;
     } 
    cout<<abx*i; //没有错误 
    return 0; 
}


4、没有包含库

如果我们尝试使用诸如 vector 之类的数据类型而不包含其库,我们将收到此错误。要解决此问题,请确保仅在包含其库后才使用标识符。例如,在这里使用 vector 而不包括它的库。这给出了一个错误。要解决它,只需事先包含所需的库。

#include<iostream> 
using namespace std; 
int main(){ 
    vector<int> abx; //abx 未声明
    for(int i=0;i<5;i++){ 
        abx.push_back(i);
    } 
    cout<<abx[2];
    return 0; 
    } 
//这段代码会给我们错误 
//解决这个问题:
#include<iostream> 
#include<vector>
using namespace std; 
int main(){ 
    vector<int> abx; //abx 被声明 
    for(int i=0;i<5;i++){ 
        abx.push_back(i);
    } 
    cout<<abx[2];
    return 0; 
    }


五、C语言标识符的命名规范

1、标识符由字母、数字、下划线组成,并且首字母不能是数字。(C 标识符内不允许出现标点字符,比如 @、$ 和 %。)

2、标识符对大小写敏感,即严格区分大小写。一般对变量名用小写,符号常量命名用大写。(注:C语言中字母是区分大小写的,因此score、Score、SCORE分别代表三个不同的标识符)

3、不能把C的关键字作为用户的标识符,例如:if、for、while等。(注:标识符不能和C语言的关键字相同,也不能和用户自定义的函数或C语言库函数同名。For是可以的,因为区分大小写。)

4、标识符长度是由机器上的编译系统决定的,一般的限制为8字符。(注:8字符长度限制是C89标准,C99标准已经扩充长度,其实大部分工业标准都更长)

5、标识符命名应做到"见名知意",例如,长度(外语:length),求和、总计(外语:sum),圆周率(外语:pi)。

发表评论 (已有2条评论)

评论列表

dxjnn121 @回复
2023-03-06 10:11:15

还好我不学c

niche @回复
2023-03-08 15:28:36

很好,收藏了,match中!