c語言編譯運行後出現make
① c語言編譯運行出現Makefile.win已經改變,怎麼改
這個提示是說你當前項目里有多個文件里都有叫main的函數,這樣會導致系統不清楚從哪個main執行,建議你可以把其它文件里的main隨便改下下名字比如叫main1什麼的,只把你當前要運行的文件里的主函數改為main就行了。
或者建議如果只有一般的測試代碼只有一個文件的那種,新建的時候就不要建項目,直接建文件就可以了。
② DEV-C++中c語言的文件編譯 的時候自動生成了一個makefile.win的文件而且編譯器在該文件中報錯。
這不是在make文件中報錯的,調試報錯信息需要從最開頭開始查看,你的main.c文件中有3個未定義的引用。分別是:initwindows、beginpaint、endpaint.還有一個指針沒有初始化指向了0x0地址。所以程序編譯被錯誤中斷了,沒有生成exe文件,所以make文件在執行exe文件時找不到目標。上面缺少的那些引用應該是用來繪制窗體的函數,應該是位於哪個系統頭文件中,你的代碼中應該是沒有添加相應的頭文件引用才導致上述問題的。另外,指針在使用之前一定要初始化,通過函數賦值以後一定要判斷是否賦值正確(一般判斷是否為NULL)
③ 寫c語言編譯運行的時候出現這個怎麼解決
這個錯誤和你發上來的這個圖沒多大關系
這個是makefile
寫的應該沒什麼問題
出錯的是main.c
裡面調用了max
但是沒有找到max函數。
你定義 或者聲明一下這個就可以了
④ .mak是什麼文件
mak 文件裡面存放的是編譯時的參數配置,make命令是有了c以後才會有的,他是用來操作.mak文件的。
這個是學了編程的人才會明白是咋回事的,有學C語言的話應該多多少少都會看見這個後綴的文件,很多人在學習編程入門的時候都會學習C語言。
C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。
⑤ 用c語言做出來的exe,運行後,出現的文件是什麼,擴展名為out
這是中間文件,編譯器將源代碼編譯成中間文件,鏈接器負責將中間文件和必要的庫一起鏈接成可執行文件
一般只在多文件編譯時有用(修改時可以只編譯修改過的文件,未變化的文件可以直接鏈接而無需重新編譯),如果不需要,編譯完可刪除,只是臨時文件而已
⑥ linux中用C語言編寫完模塊後怎麼編寫makefile文件用到什麼命令以什麼格式編寫
vi Makefile #打開vi編輯器
在編輯器里輸入以下內容:
#當只有一個文件需要編譯的時候
finame:filename.c #冒號前面是要編譯成的目標文件(可以任意命名),後面是你編寫的C文件
gcc -o filename filename.c #gcc前面是按Tab製表符
#filename:filename.c 是指filename文件的生成要依賴filename.c文件
#然後換行後按Tab鍵,然後編寫編譯規則
#make命令一般是同時編譯多個文件時才使用,以下是同時編寫多個獨立的C文件
#filename1和filename2……沒有依賴關系
filename1:filename1.c
gcc -o filename1 filename1.c
filename2:filename2.c
gcc -o filename2 filename2.c
#makefile編譯多個需要依賴(互相調用的文件)
main:main.o file1.o file2.o #main是最終要生成的目標文件,後面.o就是需要調用的文件的對象文件
main.o:main.c
gcc -c main.c #生成main.o對象文件,main.c裡面是有主函數的
file1.o:file1.c
gcc -c file1.c
file2.o:file2.c
gcc -c file2.c
#以上差不多就可以用了
#一下是我找的例子
#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s\n",print_str);
}
/* mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif
/* mytool2.c */
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("This is mytool2 print %s\n",print_str);
}
當然由於這個程序是很短的我們可以這樣來編譯
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o main main.o mytool1.o mytool2.o
這樣的話我們也可以產生main 程序,而且也不時很麻煩.
# 這是上面那個程序的Makefile 文件
main:main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o:main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o:mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o:mytool2.c mytool2.h
gcc -c mytool2.c
有了這個Makefile 文件,不過我們什麼時候修改了源程序當中的什麼文件,我們只要執行
make 命令,我們的編譯器都只會去編譯和我們修改的文件有關的文件,其它的文件她連理
都不想去理的。
下面我們學習Makefile 是如何編寫的。
在Makefile 中也#開始的行都是注釋行.Makefile 中最重要的是描述文件的依賴關系的說
明.一般的格式是:
target: components
TAB rule
第一行表示的是依賴關系.第二行是規則.
比如說我們上面的那個Makefile 文件的第二行
main:main.o mytool1.o mytool2.o
表示我們的目標(target)main 的依賴對象(components)是main.o mytool1.o mytool2.o
當倚賴的對象在目標修改後修改的話,就要去執行規則一行所指定的命令.就象我們的上
面那個Makefile 第三行所說的一樣要執行 gcc -o main main.o mytool1.o mytool2.o
注意規則一行中的TAB 表示那裡是一個TAB 鍵
⑦ c語言!!編譯的時候出現這個提彈窗,makefile.win已經改變,是否重新從硬碟讀取。這是什麼
主要原因可能是:1.在編譯器外打開、載入或修改了所用文件。2.可能是引用或打開的路徑不正確。3.某些語法錯誤時引起編譯器對後面程序的錯誤解讀,報出錯誤的警報信息。
可以嘗試:1 關閉文件後重新,關閉編譯器後重新打開項目。2.關閉其他打開該文件的軟體或者編輯器 3.注釋掉新修改部分的代碼,排查錯誤。
⑧ 求編程高手幫助,程序編譯正確,不過運行後出現出錯,感覺應該是釋放動態內存方面出了問題。
你這里
q[i]=new int[first];
new的是first個元素的數組,但是在賦值的是後
q[i][0]=first;
for(j=1;j<=first;j++)
scanf("%d",&q[i][j]);
給了first+1個元素賦值,所以破壞了內存了。改成
q[i]=new int[first+1];就OK了