c++未定义标识符怎么办?
展开全部
1、通常在定义某个类型的变量时我们都需要引入相应的头文件,系统才能别该标识符。
2、在警告栏发现头文件信息并没有被识别,而是被系统在查找预编译头使用时跳过了,因为如果在.cpp中未引入相关.h文件出现这样的错误很正常,但是现在是已经引入了相关的头文件,却还是出现了error C2065、error C3861、error C2228...的错误。
3、也就是说头文件在这里并没有生效,而是被直接跳过了,自然其对应的标识符也会无法识别的。然后我把#include "stdafx.h" 头文件移到最上面在尝试调试,结果竟然不在报未声明的标识符错误了,直接编译成功了。
4、这里还有个错误提示,当遇到无法解析外部符号时我们要查看下我们引用的文件可能不全,这里我就是没把“Fwlib32.lib”这个文件引入到项目中才导致错误的。
展开全部
#include <iostream>
#include <assert.h>
using namespace std;
struct LinkNode{
char data;
struct LinkNode *link;
LinkNode(){int data=0;LinkNode *top=NULL;}
};
class LinkedStack{
private:
LinkNode *top;
int size;
public:
LinkedStack(){top = NULL ;};
~LinkedStack(){makeEmpty();};
void push(char x);
char pop();
bool makeEmpty();
int getSize();
bool getTop();
bool isEmpty();
};
void LinkedStack::push(char x){
LinkNode *newNode=new LinkNode;
newNode->data=x;
newNode->link=top;
top=newNode;
size++;
assert(top!=NULL); };
bool isEmpty(){
if(top == NULL)return true; //这里老是提示top为“未定义标识符”怎么办?
return false;
//return (top==NULL)?true:false;这种写法也提示出错
};
char LinkedStack::pop() {
char x;
if(isEmpty()==true){
cout<<"空链表,没有出栈的元素了哦,傻瓜!"<<endl;
return false;}
LinkNode *p=top;
top= top->link;
x=p->data;
delete p;
return x;
};
bool LinkedStack::makeEmpty(){ //使链表全部清空
LinkNode *p;
cout<<"进行元素清空处理"<<endl;
while(top!= NULL){p=top;top=top->link;delete p;}
cout<<"小鬼,链式栈的元素已经清空完毕 !"<<endl;
return true;
};
int LinkedStack::getSize(){ //获得表的长度
LinkNode *p=top;
int k =0;
while(top!=NULL){
top=top->link; k++;
}
cout<<"现在链表的长度为 :"<<k<<endl;
return k;
};
void main (){
LinkedStack lstack;
int n ;
cout<<"请输入你要输入的字符总长度(小于100) :"<<endl;
cin>>n;
//char *p = new expression[100];
char expression[100];
cout<<"请输入你要测试的符号内容 :"<<endl;
for(int i=0;i<n;i++){
cin>>expression[i];
}
for(int j=0;j<n ;j++){
if(expression[j] ==( '('||'{'||'[')){
lstack.push(expression[j]);
}
if(expression[j] == (')'||'}'||']')){
if( expression[j] == lstack.pop()){
cout<<"第"<<j+1<<"处的字符有匹配的括号"<<endl;
}else{
cout<<"第"<<j+1<<"处的字符没有匹配的括号"<<endl;
}
}
}
while(lstack.isEmpty() == false){
int d = lstack.getSize();
cout<<"不能匹配的括号个数为 :"<<d<<endl;
cout<<"它们分别为: "<<endl;
for(int k=0;k<=d;k++){
lstack.pop();
}
}
lstack.makeEmpty();
system("Pause");
}
#include <assert.h>
using namespace std;
struct LinkNode{
char data;
struct LinkNode *link;
LinkNode(){int data=0;LinkNode *top=NULL;}
};
class LinkedStack{
private:
LinkNode *top;
int size;
public:
LinkedStack(){top = NULL ;};
~LinkedStack(){makeEmpty();};
void push(char x);
char pop();
bool makeEmpty();
int getSize();
bool getTop();
bool isEmpty();
};
void LinkedStack::push(char x){
LinkNode *newNode=new LinkNode;
newNode->data=x;
newNode->link=top;
top=newNode;
size++;
assert(top!=NULL); };
bool isEmpty(){
if(top == NULL)return true; //这里老是提示top为“未定义标识符”怎么办?
return false;
//return (top==NULL)?true:false;这种写法也提示出错
};
char LinkedStack::pop() {
char x;
if(isEmpty()==true){
cout<<"空链表,没有出栈的元素了哦,傻瓜!"<<endl;
return false;}
LinkNode *p=top;
top= top->link;
x=p->data;
delete p;
return x;
};
bool LinkedStack::makeEmpty(){ //使链表全部清空
LinkNode *p;
cout<<"进行元素清空处理"<<endl;
while(top!= NULL){p=top;top=top->link;delete p;}
cout<<"小鬼,链式栈的元素已经清空完毕 !"<<endl;
return true;
};
int LinkedStack::getSize(){ //获得表的长度
LinkNode *p=top;
int k =0;
while(top!=NULL){
top=top->link; k++;
}
cout<<"现在链表的长度为 :"<<k<<endl;
return k;
};
void main (){
LinkedStack lstack;
int n ;
cout<<"请输入你要输入的字符总长度(小于100) :"<<endl;
cin>>n;
//char *p = new expression[100];
char expression[100];
cout<<"请输入你要测试的符号内容 :"<<endl;
for(int i=0;i<n;i++){
cin>>expression[i];
}
for(int j=0;j<n ;j++){
if(expression[j] ==( '('||'{'||'[')){
lstack.push(expression[j]);
}
if(expression[j] == (')'||'}'||']')){
if( expression[j] == lstack.pop()){
cout<<"第"<<j+1<<"处的字符有匹配的括号"<<endl;
}else{
cout<<"第"<<j+1<<"处的字符没有匹配的括号"<<endl;
}
}
}
while(lstack.isEmpty() == false){
int d = lstack.getSize();
cout<<"不能匹配的括号个数为 :"<<d<<endl;
cout<<"它们分别为: "<<endl;
for(int k=0;k<=d;k++){
lstack.pop();
}
}
lstack.makeEmpty();
system("Pause");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-12
展开全部
一,没有包含头文件;
二、包含了头文件,但是否存在命名空间,如果存在,请using namespace;
三、你用的标识符是否有外部定义的静态库,如果有,请在项目的链接器->输入中加.lib文件的引用。
二、包含了头文件,但是否存在命名空间,如果存在,请using namespace;
三、你用的标识符是否有外部定义的静态库,如果有,请在项目的链接器->输入中加.lib文件的引用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-12
展开全部
没包含头文件吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询