『壹』 C語言 不能調用函數
檢查一下,函數調用結果能否通過參數 帶回 調用處。
通常,參數用指針才能帶回。
例如,函數定義改用:
int input(TS *M){}
int multi(TS *M1, TS *M2){}
『貳』 C語言中一個函數如果在主函數中沒有調用,會被編譯么
會的,當你運行時,編譯器還要檢查你的函數是否有格式或其它錯誤!
『叄』 C++語言中,唯一不能被別的函數調用的函數是
唯一不能被別的函數調用的函數是主函數。主函數是程序執行的起點,main是相對來說的,如同音學理論之主調於泛音,泛音即程序中的除main之外的其他函數,迎合人們的思考方式而生成的而非必定的模式。有主有次,執行起來條清縷析,既可將程序模塊化又實現了一個閉合的整體。
(3)函數調用不能被編譯擴展閱讀:
主函數的兩個形參形式中的形參,允許從執行環境中傳遞任意的多位元組字元串(它們通常被稱為命令行參數),各個指針 argv[1] .. argv[argc-1] 指向每個這些字元串的第一個字元。
argv[0] 是指向一個表示用於執行該程序自身的名字的空結尾多位元組字元串(或者當執行環境不支持時,為空字元串 "")的開頭字元的指針。
這些字元串是可以改動的,雖然對它們的改動並不會被傳回給執行環境:比如可以用 std::strtok 來使用它們。由 argv 所指向的數組的大小至少為 argc+1,其最後一個元素 argv[argc] 保證為一個空指針。
『肆』 TC 2.0 中clrsrc函數不能被編譯
或標簽) ,該連接器無法找到所有的圖書館和目標文件它的搜索。一般情況下,有兩個原因發生此錯誤:什麼代碼要求不存在(符號拼寫錯誤或使用了錯誤的情況下,例如) ,或要求的代碼錯誤的(您使用的是混合版本圖書館?一些從一個版本的產品,另一些從另一個版本) 。
無數種編碼和編譯錯誤可能會導致LNK2001 。有幾個具體原因下面列出,一些有聯系的更詳細的解釋。
編碼問題
不匹配的情況下在您的代碼或模塊定義( 。畫質)文件可能會導致LNK2001 。例如,如果您命名一個變數「 var1 」在一個C + +源文件,並嘗試使用它作為「 VAR1 」在另一個,你會收到此錯誤。解決辦法是完全匹配的情況下,文中所有提及。
一個項目,使用功能內嵌尚未確定了職能。 cpp文件,而不是在頭文件可能會導致LNK2001 。
如果您使用的是C + +中,請確保使用外部的「 C 」時調用C函數的C + +程序。通過使用外部的「 C 」您的使用武力的C命名約定。了解編譯器開關一樣/總蛋白或/鍀武力將文件編譯為一個C ( /技術合作)或C + + ( /總蛋白)檔案不管文件擴展名,或者您可能會得到不同的函數名比您預期的。
試圖參考功能或數據不具備的外部聯系的原因LNK2001 。 C + +中,內置的功能和構造數據內部的聯系,除非明確指定為外部。
丟失函數機構或變數會導致LNK2001 。剛剛一個函數原型或外部宣言將使編譯繼續,沒有錯誤,但鏈接將無法解決您的電話的地址或參考變數,因為沒有功能代碼或變數空間保留。
姓名裝修採用參數的函數進入最後裝飾功能名稱。調用一個函數的參數類型不匹配是在函數聲明可能會導致LNK2001 。
錯誤包括原型將導致編譯預期功能的機構,不提供。如果您同時擁有一類和非類執行函數F ,小心C + +的范圍內解決的規則。
當使用C + +中,一定要包括執行特定功能的一類,而不只是一個原型的類的定義。
試圖調用一個純虛函數的構造函數或析構函數的抽象基類將導致LNK2001因為按照定義一個純虛函數沒有基類執行。
全球唯一的函數和變數是公開的。
職能宣布與靜態修飾的定義文件的范圍。靜態變數具有相同的限制。試圖訪問任何靜態變數以外的文件,他們被宣布可能會導致出現一個編譯錯誤或LNK2001 。
一個變數的函數內宣布(一局部變數)只能使用范圍之內的這一職能。
C + +的全球靜態常量有聯系。這是不同於c.如果您嘗試使用全球不斷在C + +的多個文件你錯誤LNK2001 。一個辦法是包括常量初始化的一個頭文件,其中包括在您的頭。 cpp文件必要時,就好像它是一個函數原型。另一種辦法是使變數非恆定和使用時參考不斷評估它。
『伍』 函數不被調用還能運行嗎
你應該指的是中斷服務函數:就是後綴為interrup的函數!這種函數是不能被調用的!但是只要相應的中斷打開!
比如程序中的
ET0=1指的是定時器T0中斷打開 EA=1代表總中斷打開!
TR0=1 指啟動定時器0
這樣的話對應的中斷服務函數就會在定時器溢出後!觸發中斷中斷服務函數就會被執行!
interrupt 後面的數字代表中斷類型
0代表外部中斷0
1代表定時器T0中斷
2代表外部中斷1
3代表定時器T1中斷
4代表串口中斷 普通的51單片機主要就是這5個中斷!
『陸』 如下的函數調用為什麼會在編譯的時候出錯
在函數聲明和定義的時候,如果參數列表為空,可以設為void,但調用的時候,因為參數列表為空,說明沒有傳遞參數。
定義一個函數如下:
int getNum( int nNum )
{
return nNum;
}
則,調用的時候必須要給nNum賦值的,總不能在main()函數中這樣調用吧
int main(){
getNum( int nNum );
}
所以調用的時候不用加void;
『柒』 c語言 自己寫了一個函數不能被調用
//你改變的只是子程序里的局部變數,所以你的主函數里是得不到結果的
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#defineMAX_LENGTH_NAME20
typedefcharNOM[20];
int**open(constchar*,int*,int*);
intmain(void)
{
intgrille_nbl=0,grille_nbc=0;
inti,j;
printf("%d%d ",grille_nbl,grille_nbc);
int**tab=NULL;
tab=open("1.txt",&grille_nbl,&grille_nbc);
printf("%d%d ",grille_nbl,grille_nbc);
for(i=0;i<=grille_nbl;i++)
{
for(j=0;j<=grille_nbc;j++)
{
printf("%d",tab[i][j]);
}
printf(" ");
}
if(tab)
{
free(tab[0]);
free(tab);
}
returnEXIT_SUCCESS;
}
int**open(constchar*nom_fichier,int*grille_nbl,int*grille_nbc)
{
inti,j;
FILE*fichier=NULL;
int**r=NULL;
fichier=fopen(nom_fichier,"rt");
if(fichier==NULL)
{
fprintf(stderr,"Erreur ");
returnNULL;
}
fscanf(fichier,"%d%d",grille_nbl,grille_nbc);
r=(int**)malloc(grille_nbl[0]*sizeof(int*));
if(r==NULL)returnNULL;
r[0]=(int*)malloc(grille_nbl[0]*grille_nbc[0]*sizeof(int));
if(r[0]==NULL)
{
free(r);
returnNULL;
}
for(i=1;i<grille_nbl[0];++i)
{
r[i]=r[i-1]+grille_nbc[0];
}
for(i=0;i<grille_nbl[0];++i)
{
for(j=0;j<grille_nbc[0];++j)
{
r[i][j]=0;
}
}
fclose(fichier);
returnr;
}
『捌』 C語言中不能被調用的函數是( )函數
main
主函數
主函數只可以返回數值給操作系統
『玖』 問個問題,為什麼我定義的static函數能被其他源文件調用。
不能。
C語言中的static函數:
內部函數和外部函數
函數一旦定義後就可被其它函數調用。但當一個源程序由多個源文件組成時,在一個源文件中定義的函數能否被其它源文件中的函數調用呢。為此,C語言又把函數分為兩類:
一、內部函數
如果在一個源文件中定義的函數只能被本文件中的函數調用,而不能被同一源程序其它文件中的函數調用, 這種函數稱為內部函
數。定義內部函數的一般形式是: static 類型說明符 函數名(形參表) 。
例如:
static int f(int a,int b) 內部函數也稱為靜態函數。但此處靜態static 的含義已不是指存儲方式,而是指對函數的調用范圍只局限於本文件。 因此在不同的源文件中定義同名的靜態函數不會引起混淆。
『拾』 在主函數中,必須要對被調用函數進行類型說明,否則在編譯時會出現錯誤,這句話為什麼錯
被調用函數不在主函數中聲明的。比如使用了include文件包含,就可以直接使用,不同定義了。