定義了變數為啥編譯顯示沒有定義
『壹』 為什麼明明定義了符號,卻在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;