undeclared identifier

外语
赵荷老师 2019-07-17 16:58:10

undeclared identifier:说明编译时找不到他的声明和定义,就是编译器不认识这个标志,比如变量,或者对象之类的。

需要把错误的详细信息贴出来,这样比较容易找到错误,如果是书上抄的代码,很有可能是缺少包含文件,很多书上的例子都会省略包含文件的,可看看有什么文件用到了,但是没有包含的进来的。

简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables)

扩展资料:

高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。

编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。

对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。

#undeclared identifier#

返回顶部

影响力:3909

C++的undeclared identifier

描述: #include<iostream>#definePI3.14;usingnamespacestd;classCircle{public:voidSet(inta,intb,intc);floatGetArea();floatGetCircumference();voidShow();private:intx;inty;intr;};vo... #include <iostream>
#define PI 3.14;
using namespace std;

class Circle
{
public:
void Set(int a,int b,int c);
float GetArea();
float GetCircumference();
void Show();
private:
int x;
int y;
int r;
};

void Circle::Set(int a,int b,int c)
{
x=a;
y=b;
r=c;
}

float Circle::GetArea()
{ return r*r*PI; }

float Circle::GetCircumference()
{ return 2*r*PI; }

void Show()
{
cout<<"\n圆心坐标:("<<x<<","<<y<<")"<<endl;
cout<<"\n半径:"<<r<<endl;
cout<<"\n周长:"<<GetCircumference()<<endl;
cout<<"\n面积:"<<GetArea()<<endl;
}

void main()
{
int a,b,c;
cout<<"请输入圆形的圆点坐标x和y以及半径r:"<<endl;
cin>>a>>b>>c;
Circle Cir;
Cir.Set(a,b,c);
Cir.Show();
}

请教一下,Show里面的问题怎么解决,想运行却老卡在那里
展开
这个解答帮助过1549人

忘了加类名了,改了下:

#include <iostream>
#define PI 3.14  //注意宏后面不要有分号,虽然你这个代码里不会有问题
using namespace std;
class Circle
{
public:
void Set(int a, int b, int c);
float GetArea();
float GetCircumference();
void Show();
private:
int x;
int y;
int r;
};
void Circle::Set(int a, int b, int c)
{
x=a;
y=b;
r=c;
}
float Circle::GetArea()
{
return r*r*PI;
}

float Circle::GetCircumference()
{
return 2*r*PI;
}

void Circle::Show()  // Circle::Show()
{
cout<<"\n圆心坐标:("<<x<<","<<y<<")"<<endl;
cout<<"\n半径:"<<r<<endl;
cout<<"\n周长:"<<GetCircumference()<<endl;
cout<<"\n面积:"<<GetArea()<<endl;
}

void main()
{
int a, b, c;
cout<<"请输入圆形的圆点坐标x和y以及半径r:"<<endl;
cin>>a>>b>>c;
Circle Cir;
Cir.Set(a, b, c);
Cir.Show();
}

编辑时间 2019-10-02 08:37:11
影响力:5894

keil4编写STM32代码,移植函数出现use of undeclared identifier ‘xxx’,程序包含了所需要的头文件

描述: fd_set报useofundeclaredidentifier'fe_set',程序包含了sockets.h头文件,而且sockets.h中有fd_set结构体?求一高手指教,感谢!!... fd_set报use of undeclared identifier 'fe_set',程序包含了sockets.h头文件,而且sockets.h中有fd_set结构体?求一高手指教,感谢!!

这个解答帮助过4015人

检查包含sockets.h的位置对不对……
检查sockets.h中 fd_set 的定义到底是什么,是不是一个结构体类型声明,此外各种宏定义开关能否保证这个声明切实被执行。

编辑时间 2019-05-19
影响力:4406

不知道哪里代码出错老是有错误error C2065: 'printf' : undeclared identifier Error executing cl.exe.

描述: #include<iostream.h>intmain(){inta=1,b=2,k,i,j;k=a&b;printf("a&b=%d",k);i=a|b;printf("a|b=%d",i);j=a^b;printf("a^b=%d",j);return0;}... #include<iostream.h>
int main()
{
int a=1,b=2,k,i,j;
k=a&b;
printf("a&b=%d",k);
i=a|b;
printf("a|b=%d",i);
j=a^b;
printf("a^b=%d",j);
return 0;
}
这个解答帮助过7210人

头文件用 stdio.h试试

编辑时间 2018-10-10
影响力:1275

C语言 'n' : undeclared identifier

描述: 上面不是定义了n了吗,怎么说我没有定义?第29行报错了为什么上面定义的n不能用在第二个定义函数,只用用在第一个定义函数?... 上面不是定义了n了吗,怎么说我没有定义?


第29行报错了
为什么上面定义的n不能用在第二个定义函数,只用用在第一个定义函数?

这个解答帮助过85人

编译器都报错了,说29行的n没定义,fun函数参数列表里面没有n啊。

追问

在哪里定义

编辑时间 2018-10-03
影响力:442

error C2065:'strlen' : undeclared identifier怎么解决?

这个解答帮助过9642人

开头的时候没有对其定义

在  #include <malloc.h>   

之后加上  #include <string.h>

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

编辑时间 2019-04-17
影响力:6330

这个程序为什么一直出现下面这个错误,明明程序没问题啊:error C2065: 'N' : undeclared identifier

描述: #defineN80#include<stdio.h>#include<string.h>#include<stdlib.h>#include<ctype.h>#include"stdafx.h"voidfun(char*str);voidmain(void){charbuffer[N]="aBdEF3@#g";fun(buffer);p... #define N 80
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include "stdafx.h"
void fun(char *str);

void main (void)
{char buffer[N]="aBdEF3@#g";
fun(buffer);
puts(buffer);
}

void fun(char *str)
{
int x,gs,cd,p;
gs = 0;
cd = strlen(str);
for(x=0; x<cd; x++)
{ if( islower(*(str+x)))
gs++;
}
if (cd+gs > N-1)
{printf("Do nothing:having risk of buffer");
exit(-1);
}
x=cd;
p = gs;
for( ; p>0; p--)
{ do
{ *(str+x+p) = *(str+x);
}while(!islower(*(str+x--)));
*(str+i+p) = '_';
}
}
展开
这个解答帮助过1373人

看程序,没有发现错误.网上搜了下,发现其他解决方式,可以试一下.
<最终解决办法是修改了一下其头文件的顺序,原先copy时“#include "StdAfx.h"”在几个头文件的最后位置,将其提前到最前位置,问题得到解决。>

追问

但是把这个#include "stdafx.h"改到头文件最前面之后程序运行的时候都会处错误,导致程序崩溃,这样也算是没效果的啊

追答

这个头文件的位置先不动,把宏定义#define N80  写到#include "stdafx.h"的下方,再试试呢?我一般都把宏定义下在头文件的下方

#include "stdafx.h"还是写在头文件的最后

更多追问

编辑时间 2019-04-15
影响力:7680

c++求大神帮忙改一下代码,自己是抄的,有几处错误都是undeclared identifier,可加qq1203890975

描述: 代码是关于遗传算法的... 代码是关于遗传算法的

这个解答帮助过8588人

这个错,就是没初始化的意思

追答

你发下代码,这是很简单的错误

1335894087

编辑时间
影响力:2873

关于 Visual C++问题

描述: 关于VisualC++问题如图,这么一个简单的语言,点了运行之后,为什么左下角会有错误的提示,程序也没有运行。... 关于 Visual C++问题如图,这么一个简单的语言,点了运行之后,为什么左下角会有错误的提示,程序也没有运行。

这个解答帮助过3320人

因为你把iostream拼成了iostrean,预编译找不到头文件报错。
把编译信息向上滚动可以看到错误原因。
另外非常不建议使用VC6学习C++,它已经严重过时,不兼容C++11标准。

追问

Configuration: Cpp1 - Win32 Debug-
ompiling...
Cpp1.cpp
c:\users\admin\desktop\cpp1.cpp(4) : error C2065: 'end1' : undeclared identifier
执行 cl.exe 时出错.

这是什么原因呢?

追答

endl,不是end1。

更多追问

编辑时间 2019-09-18
影响力:4509

C语言“undeclared identifier”是什么意思?

这个解答帮助过4423人

标识符没有声明,
就是没有声明的变量,函数,类型,却在使用;

标识符:就是 变量,函数,类型 等。

比如
1)没有声明语句直接使用

x=10;/* undeclared identifier x */
2) 没有声明语句,直接使用函数.

fun(10);
/* undeclared identifier
fun
*/
C要求变量和 函数,类型 要先声明,后引用。

1)
int main(){
int x;
//
声明
变量

x=10;
}
2)
int y=10;

//
定义变量, 同时完成声明.

3)
int fun(){return 10;}//定义函数,同时完成
声明
函数。
4)
int fun(); //

声明
函数

int main(){
int x=fun();
return 0;
}
int fun(){return 100;}
//定义函数

编辑时间 2019-03-07
影响力:8723

c语言出现Use of undeclared identifier 问题

描述: 报错:Useofundeclaredidentifier'throw'Useofundeclaredidentifier'bool'Useofundeclaredidentifier'numberend'要怎么改?代码如下:#include<stdio.h>#include<string.h>chars1[100... 报错:Use of undeclared identifier 'throw'Use of undeclared identifier 'bool'Use of undeclared identifier 'numberend'要怎么改?代码如下:#include <stdio.h>#include <string.h>char s1[100];float s2[100];int n2;void cal(int x){ switch(x){ case 1:s2[n2-2]+=s2[n2-1];break; case 2:s2[n2-2]-=s2[n2-1];break; case 3:s2[n2-2]*=s2[n2-1];break; case 4:if(s2[n2-1])s2[n2-2]/=s2[n2-1];else throw 0; } n2--;}float calall(){ int stack[100],ns=0; int n1=strlen(s1); bool numberend=0;int nbracket=0; for(int i=0;i<n1;){ if(s1[i]>47&&s1[i]<58){ if(numberend)throw 1;numberend=1; sscanf(s1+i,"%f",&s2[n2++]); while((s1[i]>47&&s1[i]<58)||s1[i]=='.')i++; } char* sop="(+-*/)"; int op=strchr(sop,s1[i++])-sop; if(op<0 || op>6)throw 3; if(op==0){if(numberend)throw 1;nbracket++;} if(op==5){if(nbracket<=0)throw 2;nbracket--;} if(op>0 && op<6 && !numberend)throw 1; if(op>0 && op<5)numberend=0; if(op==1 ||op==2 ||op==5)while(ns>0&&stack[ns-1]>0)cal(stack[--ns]); if(op==3 ||op==4)while(ns>0&&stack[ns-1]>2)cal(stack[--ns]); if(op<5)stack[ns++]=op; if(op==5)ns--; } if(nbracket)throw 2; if(!numberend)throw 1; while(ns)cal(stack[--ns]); return s2[0];}int main(){ printf("负数请用:(0-正数)表示,退出请输入:a+回车\n"); while(1) { n2=0; scanf("%s",s1); if(s1[0]=='a')return 0; try{ printf("%g\n",calall());} catch(int x) { switch(x) { case 0:printf("不能除以0\n");break; case 1:printf("运算符位置不正确\n");break; case 2:printf("左右括号不匹配\n");break; case 3:printf("存在不合法字符\n");break; } } }}

展开

这个解答帮助过6809人

#include "stdafx.h" #include <iostream> using namespace std; * void fun1(double p1,double p2,double p3); void fun2(double q1,double q2,double q3); * void main() main前加入*部分 使用函数前没有声明

追问

显示:'stdafx.h' file not found 而且其他的错误也没有变

编辑时间 2018-12-22