定义了变量为啥编译显示没有定义
‘壹’ 为什么明明定义了符号,却在c++中却显示没有定义。
有时候这是一个BUG,程序编译没有问题,但是你找变量定义会发现找不到,尤其是当你喜欢粘贴、拷贝程序而非手写的时候,偶尔会出现这种情况。只要你编译正确就行了,或者你再稍微作下修改,再保存试试看,
‘贰’ 明明定义参数了,为什么编译说没有定义
函数由两部分组成:声明部分和执行语句。声明部分的作用是对有关的标识符(如变量、函数、结构体、共用体等)的属性进行说明。对于函数,声明和定义的区别明显,函数的声明是函数的原型,而函数的定义是函数功能的确立。对函数的声明放在声明部分中,函数的定义不在函数的声明部分范围内,是一个文件中的独立模块。对变量而言,声明与定义的关系稍微复杂。声明部分出现的变量有两种情况:一种需要建立存储空间的(如inta;);一种不需要建立存储空间的(如externinta;)。前者称为定义性声明(definingdeclaration),简称为定义(definition)。后者称为引用性声明(referenceingdeclaration)。声明包括定义,并非所有的声明都是定义。对“inta;”而言,定义性声明,建立存储空间的声明称为定义,不需要建立存储空间的声明称为声明。指的声明是狭义的,即非定义性声明。例如:intmain(){externinta;//这是声明不是定义。声明a是一个已定义的外部变量}inta;//是定义,定义a为整型外部变量外部变量定义和外部变量声明的含义不同。外部变量的定义一次,位置在所有函数之外,而同一文件中的外部变量的声明可以有多次,位置可以在函数之内,也可在函数之外。系统根据外部变量的定义分配存储单元。对外部变量的初始化只能在定义时进行,而不能在声明中进行。所谓声明,作用是向编译系统发出一个信息,声明该变量是一个在后面定义的外部变量,提前引用该变量而作的声明。extern只用作声明,而不用于定义。static来声明一个变量的作用有二:对局部变量用static声明,变量在本函数调用结束后不释放,整个程序执行期间始终存在,使其存储期为程序的全过程。全局变量用static声明,变量的作用域只限于本文件模块(即被声明的文件中)。用auto,register,static声明变量时,定义变量的基础上加上关键字,不能单独使用。
‘叁’ keil中,在函数里明明定义了变量,为什么编译后还提示该变量是没有定义的标示符
声明必须在使用前
声明不能在条件判断语句之中
‘肆’ c++ 为什么在类里定义了i,在main函数里面使用时编译却说没有定义
在类里定义了i,那你在main函数里使用要通过那个类的对象来调用啊。 追问: 是呀 可是每次编译都说我用的 变量 i 没定义 回答: 贴个代码看看 追问: #include<iostream> using namespace std; class Mok { public: void Input(int,int); void Us(int,int,int); private: int M; int N; } void Mok::Input(int m,int n) { M=m; N=n; cin>>m>>" ">>n; } void Mok::Us(int h,int j,int mine) { for (;h<5000;h++) { mine = h; for(j=1;j<=n;j++) { if (mine%(m-1)!=0) break; else mine=mine/(m-1)*m; mine++; } if(j>n) { cout<<h<<" "<<mine<<endl;break; } } int main() { Mok l; l.Input(m,n ); l.Us(1,j,mine); return 0; } 一直不知道到底是哪出了问题 回答: 你main函数里的m,n 变量 没有定义,如果你要用Mok I;里的m,n的话,应该用I.m,I.n来调用。j,和mine一样没定义。。。 追问: 能帮我改下么 ??我不知道在哪定义 每次写的代码都是这个问题 好烦 回答: #include<iostream> using namespace std; class Mok { public: void Input(int,int); void Us(int,int,int); } void Mok::Input(int m,int n) { M=m; N=n; cin>>m>>" ">>n; } void Mok::Us(int h,int j,int mine) { for (;h<5000;h++) { mine = h; for(j=1;j<=n;j++) { if (mine%(m-1)!=0) break; else mine=mine/(m-1)*m; mine++; } if(j>n) { cout<<h<<" "<<mine<<endl;break; } } int main() { Mok l; int m=0,n=0; int j =0,mine = 1; l.Input(m,n ); l.Us(1,j,mine); return 0; } 大概能运行了,你这种问题的话应该多看看了解下 变量 作用域 的部分,变量的 生存周期 什么的 追问: 还是有点问题 它的 m n 显示在 Us函数中没有定义 回答: #include<iostream> using namespace std; class Mok { public: void Input(int,int); void Us(int,int,int); private: int m,n; } void Mok::Input(int m1,int n1) { m=m1; n=n1; cin>>m>>" ">>n; } void Mok::Us(int h,int j,int mine) { for (;h<5000;h++) { mine = h; for(j=1;j<=n;j++) { if (mine%(m-1)!=0) break; else mine=mine/(m-1)*m; mine++; } if(j>n) { cout<<h<<" "<<mine<<endl;break; } } int main() { Mok l; int m=0,n=0; int j =0,mine = 1; l.Input(m,n ); l.Us(1,j,mine); return 0; } 这样应该好了。。之前没注意看,这些是很简单的东西了,多看书啊!!!!
‘伍’ 为什么明明已经定义了还说没有定义
你这个是C语言,不是C++,不支持在函数中间定义变量。
char name[10];
char *p;
char author[20];
char *q;
以上需要移到函数开头。
而且,你写的程序风格不好,一般只有.h头文件我们才会#ifndef _HEAD_H_ ...
include我们一般也是include头文件。
‘陆’ VB程序编译变量未定义,是什么原因!
按F5运行程序,程序会停在需在定义的变量上,或者停在有问题的地方。
‘柒’ VB做播放器,编译时候提示变量未定义是什么意思,怎么处理呢
VB对变量类型没有强制约定,甚至普通变量不声明都可以直接使用,编译提示变量未定义,应该是对象类型变量。
‘捌’ 编译错误:变量未定义
窗体上放一个按钮,把它的name改成CmdStart
‘玖’ 用对话框类定义一个变量,编译是出现未定义
CMyDlg 对应的头文件,没有引入 。在程序前面加上 #include"MyDlg.h"试试,如果还有问题,
我们再探讨~
‘拾’ C语言extern申明了全局变量,编译仍旧出错,提示未定义
把关键字 static 去掉,
staticunsignedshortmynumber=0;
如果加了static 变量 mynumber 只在A.c 文件中访问,其他文件中是访问不了的。
static 有两个作用,一是用在函数里表示变量是一个静态变量。二是作用域,限制变量只能在本文件中使用。
可以如下定义:
//A.c
unsignedshortmynumber=0;
//B.c
externunsignedshortmynumber;