Ⅰ c#聲明了變數但從未使用過是什麼意思
就是你定義了一個變數,但是之後寫的程序中就沒有用到這個變數了。
Ⅱ 我自己寫了一個函數定義在另一個.c文件中,已聲明,但編譯時報錯未定義
在定義函數的.c文件中包含聲明函數的.h文件。例如:
//f1.h
#include <stdio.h>
void func(int x);
//f1.cpp
#include "f1.h"
void func(int x)
{
//函數定義
}
//main.cpp
#include "f1.h"
void main()
{
int x = 2;
func(2);
}
Ⅲ C語言 函數已經聲明 為什麼提示未定義
聲明和定義不是一回事!聲明只是簽名,定義才為函數提供真正的代碼。
Ⅳ keil中已經定義了為什麼編譯還說未定義
有3個子程序聲明語句不帶括弧( ); 肯定是錯誤的。
其實這三行沒必要寫的。就是有括弧( )是對的,也不用寫這三行的,都刪掉。如果子程序寫在主程序的後面了,主程序還要調用時,才需要先聲明。而這三個子程序都在主程序前面的,就不用聲明了。
Ⅳ C語言extern申明了全局變數,編譯仍舊出錯,提示未定義
把關鍵字 static 去掉,
staticunsignedshortmynumber=0;
如果加了static 變數 mynumber 只在A.c 文件中訪問,其他文件中是訪問不了的。
static 有兩個作用,一是用在函數里表示變數是一個靜態變數。二是作用域,限制變數只能在本文件中使用。
可以如下定義:
//A.c
unsignedshortmynumber=0;
//B.c
externunsignedshortmynumber;
Ⅵ 我跟著教程編寫的c程序,編譯不能通過,總是提示未定義,為什麼
和設置一般沒什麼關系,code::blocks也是調用標準的編譯器進行編譯的,提升你錯了你最好仔細看看,另外,即使編譯正確,運行也不一定能成功,因為編譯器只能檢查一部分錯誤,而且主要是語法錯誤。 關於你說的int這個問題,請放代碼
Ⅶ 函數已聲明 編譯時顯示未定義出錯
你工程中有幾個文件啊
其它的 *.c 什麼的沒加到工程里來吧
Ⅷ 明明定義參數了,為什麼編譯說沒有定義
函數由兩部分組成:聲明部分和執行語句。聲明部分的作用是對有關的標識符(如變數、函數、結構體、共用體等)的屬性進行說明。對於函數,聲明和定義的區別明顯,函數的聲明是函數的原型,而函數的定義是函數功能的確立。對函數的聲明放在聲明部分中,函數的定義不在函數的聲明部分范圍內,是一個文件中的獨立模塊。對變數而言,聲明與定義的關系稍微復雜。聲明部分出現的變數有兩種情況:一種需要建立存儲空間的(如inta;);一種不需要建立存儲空間的(如externinta;)。前者稱為定義性聲明(definingdeclaration),簡稱為定義(definition)。後者稱為引用性聲明(referenceingdeclaration)。聲明包括定義,並非所有的聲明都是定義。對「inta;」而言,定義性聲明,建立存儲空間的聲明稱為定義,不需要建立存儲空間的聲明稱為聲明。指的聲明是狹義的,即非定義性聲明。例如:intmain(){externinta;//這是聲明不是定義。聲明a是一個已定義的外部變數}inta;//是定義,定義a為整型外部變數外部變數定義和外部變數聲明的含義不同。外部變數的定義一次,位置在所有函數之外,而同一文件中的外部變數的聲明可以有多次,位置可以在函數之內,也可在函數之外。系統根據外部變數的定義分配存儲單元。對外部變數的初始化只能在定義時進行,而不能在聲明中進行。所謂聲明,作用是向編譯系統發出一個信息,聲明該變數是一個在後面定義的外部變數,提前引用該變數而作的聲明。extern只用作聲明,而不用於定義。static來聲明一個變數的作用有二:對局部變數用static聲明,變數在本函數調用結束後不釋放,整個程序執行期間始終存在,使其存儲期為程序的全過程。全局變數用static聲明,變數的作用域只限於本文件模塊(即被聲明的文件中)。用auto,register,static聲明變數時,定義變數的基礎上加上關鍵字,不能單獨使用。
Ⅸ linux編譯c語言,一個被調用的函數只聲明了,沒有定義,不報錯,是怎麼回事
你聲明了,只要不調用那個函數就不會報錯,如果你程序中調用了那個只聲明未定義的函數的話,你編譯的時候就會報錯