當前位置:首頁 » 編程軟體 » 不使用c99模式編譯報錯

不使用c99模式編譯報錯

發布時間: 2023-07-20 19:46:31

① 如何設置用Dev-C++編譯C代碼,我編譯時出錯!

dev-c++對c標准很苛刻的
既是缺點又是優點
正確的c99標準的寫法是
#include
int
main(void)
{
printf("hello!");
return
0;
}
[warning]
return
type
of
'main'
is
not
`int'
這個就是違背了c99規定了
一般的函數都有返回值,而c99規定main函數必須有返回值,如果不希望返回有意義的數字,就返回0,用來表示這個程序運行無誤[如果中途中斷了程序的運行就不會執行到return,也就無法返回了]
也就是return
0
return就是函數返回的值
一般的函數有進的信息,也有出的信息
進的信息就是參數,一般的main函數,是void,也就是沒有參數
出的信息就是return的值
在這個程序中,是0
一般main函數都會返回0
以表示運行無誤
按照你說的一閃而過
原因是這個程序已經運行完了
所以就關閉掉
1、
建議你在生成exe的目錄下新建一個txt文檔
內容寫上cmd
//這是用來使用cmd,也就是命令提示符用的
然後保存,改名為cmd.bat
//一定要改擴展名
然後打開這個bat,輸入你生成的文件名
比如那個程序是1.exe
你就輸入1.exe
就可以運行了,運行之後雖然程序退出了,但是cmd沒有退出,就可以看到程序的信息而不會一閃而過了
2、
建議你在程序末尾加上getchar();
這樣在你輸入任意一個鍵之前,程序就不會運行完畢
自然就不會關閉掉
3、還可以在末尾加上system("pause");
這樣就調用了windows的pause指令,就可以暫停下來

② gcc 函數引用參數報錯(C語言)

函數參數用&i是C++的引用格式,C是不支持這個的。在VC++下面這么些無所謂,那個本身模糊了C和C++的區別。不過GCC就不一樣了,只支持C的語法,不支持C++,你這么寫當然會報錯。

warning: return makes integer from pointer without a cast應該是你函數里的問題,返還的是一個指針,但定義的時候是整數。雖然不會有錯,還是會有警告。檢查一下這是不是你的本意,是的話就要用強制轉換把指針變成整數,那樣就不會報錯。

③ 為什麼我每次編譯C語言時,都會發生這樣的錯誤

這個可能是你編程用的軟體沒有裝好,一般是路徑安裝問題。你用的是不是vc++6.0?是的話,下面有些解決方法你可以試試。
關於vc++6.0軟體編程時出現「Error spawning cl.exe」「 cannot open file "Debug/sad.exe"(其中sad是文件名)」和「計算機丟失mspdb60.ll」等類似問題時;
主要可能存在以下問題1.以前安裝過vc++6.0,但是卸載不徹底,或者重裝系統後,原來安裝軟體不能正常使用。解決方法:卸載原軟體。
2,vc++6.0與windowxpsp3兼容,在window7下計算機會提示軟體不兼容,這時不用修改成兼容模式,否者就不能使用了,直接安裝就可以了,不用考慮兼容性問題,
還用如果是從網上下載的軟體,安裝時的注冊碼一般輸入111-111111就行。另外,下載的破解版軟體可能被殺毒軟體截獲,安裝前最好先關閉殺毒軟體,然後按提示進行安裝。
3.在排除前兩個問題的前提下,出現上述問題時,很可能的問題是軟體中的設置出現錯誤。可以按下述方法進行調試即可:
打開vc界面 點擊VC「TOOLS(工具)」—>「Option(選擇)」 —>「Directories(目錄)」重新設置「Excutable Fils、Include Files、 Library Files、Source Files」
的路徑。很多情況可能就一個盤符的不同 (例如你的VC裝在C,但是這些路徑全部在D),改過來就OK了如果你裝在其他盤里,則仿照其路徑變通就行(我就是裝在D盤)。
關鍵是microsoft visual studio\ 後面的東西要相同。 如果你是按照初始路徑安裝vc6.0的,路徑應為:
executatble files:
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
C:\Program Files\Microsoft Visual Studio\VC98\BIN
C:\Program Files\Microsoft Visual Studio\Common\TOOLS
C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT

include files:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE

library files:
C:\Program Files\Microsoft Visual Studio\VC98\LIB
C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB

source files:
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC
更改完成後,關閉軟體,重新打開,再進行編程。
4,如果按第三步操作後,編程時仍然提示錯誤,就在建立工程時,將存儲路徑改為你自己建立的文件夾(隨便在那個盤建一個都行,只要自己能找到就行),
以避免編譯時文件不能打開的問題。
5,經過以上四步調試,一般情況下就可以使用了,如果還不能使用的話,可以嘗試一下三種方法。
一,卸掉現有版本,更換版本重新安裝,然後再按以上步驟進行調試。
二,直接將別人計算機中安裝好的軟體從安裝盤中復制的自己的電腦上,(這樣做有時也要按第三步和第四步進行調整,),找出文件中的圖標即可運行。
三,最後一個辦法,重裝系統,系統重裝後,一定要先裝vc++再裝補丁,不然的話還可能錯誤。

④ C語言編譯報錯

#include <stdio.h>
#include <string.h>
int main()
{

int gg(int i);
int i;
while(1){
i=0;
printf(" 1.查看歷史日程表\n");
printf(" 2.輸入新的日程表\n");
printf(" 3.查看已完成的日程表\n");
printf(" 4.查看未完成的日程表\n");
printf(" 5.退出登錄\n");
printf(" 請選擇相應序號: ");
scanf("%d",&i);
if(i==5){
break;
}
gg(i);
printf("\n");
printf("\n");
printf("\n");
}
}
int gg(int i){
int aa();
int bb();
int cc();
int dd();

switch(i){
case 1:
aa();break;
case 2:
bb();break;
case 3:
cc();break;
case 4:
dd();break;
}
}
int aa(){
FILE*fp;
int length=1000;
char str[1001];
if((fp=fopen("11s.txt","r"))==NULL){
printf("無文件");
return 0;
}
while(fgets(str,length,fp)!=NULL){
printf("%s",str);}
return 1;

fclose(fp);
}
int bb(){
FILE*fp;
char str[400];
printf("內容如下:\n");
scanf("%s",str);
if((fp=fopen("11s.txt","a+"))==NULL){
printf("文件不存在");
return 0;
}

fputs("\n",fp);
fputs(str,fp);
printf("加入成功");
fclose(fp);
return 1;
}
int cc(){
FILE*fp;
int length=1000;
char str[1001];
printf("內容如下:\n");
if((fp=fopen("11s.txt","r"))==NULL){
printf("無文件");
return 0;
}
while(fgets(str,length,fp)!=NULL){
if(strstr(str,"已完成")!=NULL){
printf("%s",str);
}
}
fclose(fp);
return 1;
}
int dd(){
FILE*fp;
int lenght=1000;
char str[1001];
printf("內容如下:\n");
if((fp=fopen("11s.txt","r"))==NULL){
printf("無文件");
return 0;
}
while(fgets(str,lenght,fp)!=NULL){
if(strstr(str,"未完成")!=NULL){
printf("%s",str);
}
}
fclose(fp);
return 1;
}

⑤ C語言:下面的代碼為什麼會出現編譯錯誤應當怎麼改正

錯誤出在a=sum;這一句——因為構成C語言程序的基本單位是函數而不是C語句,這里的a=sum;不在任何函數中,所以編譯器無法處理而出錯。把它放到主函數中的printf("%d ",a(3,5));之前就可以了。函數外只能進行全局變數定義或聲明,而不能進行其他操作,所以把int (*a)(int, int); a=sum;兩句改成int (*a)(int, int)=sum;,讓它成為聲明變數a並初始化為sum也是可以的。你可以試試。

代碼文本:

#include "stdio.h"

int sum(int a, int b);

int (*a)(int, int);

int main(int argc,char *argv[]){

a=sum;

printf("%d ",a(3,5));

return 0;

}

int sum(int a,int b){

return a+b;

}

⑥ C語言里程序編譯無誤但運行會彈出程序已停止運行是為什麼

造成程序停止運行彈框出錯的可能原因如下:

  1. 內存溢出

    內存溢出(out of memory)通俗理解就是內存不夠,程序所需要的內存遠遠超出了主機內安裝的內存所承受大小,就叫內存溢出。系統會提示內存溢出,有時候會自動關閉軟體,重啟電腦或者軟體後釋放掉一部分內存又可以正常運行該軟體

    造成內存溢出的原因可能有:

    1>棧區溢出,例如在main函數內開辟的數組空間過大,一般機器的棧區限制在8MB左右,如果開辟的數組大小超過限制,程序就會崩潰。通常的解決方法是申請堆內存,即將較大的數組作為全局變數開在main函數之外。

    2>錯誤地址訪問,常見的非法訪問包括指針漂移,數組越界等,初學者也經常出現類似scanf函數沒加區地址符號&的情況導致在讀取變數的時候因非法訪問造成的溢出。

    3>數據類型不符,問題和第二個類似,例如在聲明變數時聲明為int在輸出變數時卻用了%lld,就會造成因數據類型不符而導致的溢出。

  2. 編譯器錯誤

    部分編譯器由於所使用的標准不同(例如在一台機器上使用的可能是C99標准,而另一台機器上使用的是C11標准),或是因為編譯器鏈接庫的損壞,在少數情況下也可能導致程序出現不限於崩潰退出的異常錯誤,通常解決方法是到編譯器官方網站下載最新版的IDE安裝。


熱點內容
項目編譯慢 發布:2025-02-06 16:53:48 瀏覽:379
python處理excel文件 發布:2025-02-06 16:36:09 瀏覽:439
演算法相對定位 發布:2025-02-06 16:32:42 瀏覽:727
java程序的編譯和執行 發布:2025-02-06 16:21:45 瀏覽:419
什麼是淘寶帳號和密碼 發布:2025-02-06 16:21:36 瀏覽:497
解壓前面簽 發布:2025-02-06 16:02:00 瀏覽:324
華碩訪問點 發布:2025-02-06 15:56:57 瀏覽:331
excel拼接sql 發布:2025-02-06 15:50:10 瀏覽:501
加密手機直播 發布:2025-02-06 15:49:31 瀏覽:537
自帶ftp伺服器好用嗎 發布:2025-02-06 15:26:11 瀏覽:112