Ⅰ 常見的c語言編譯器是什麼
目前最流行的C語言編譯器有以下幾種:
1、GNU Compiler Collection 或稱GCC
GCC(GNU Compiler Collection,GNU編譯器套件),是由 GNU 開發的編程語言編譯器。它是以GPL許可證所發行的自由軟體,也是 GNU計劃的關鍵部分。
GCC原本作為GNU操作系統的官方編譯器,現已被大多數類Unix操作系統(如Linux、BSD、Mac OS X等)採納為標準的編譯器,GCC同樣適用於微軟的Windows。GCC是自由軟體過程發展中的著名例子,由自由軟體基金會以GPL協議發布。
2、Microsoft C 或稱 MS C
Microsoft C 是c語言的一種IDE(集成開發環境),常見的還有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C等等......
3、Borland Turbo C 或稱 Turbo C
Turbo C是美國Borland公司的產品,Borland公司是一家專門從事軟體開發、研製的大公司。該公司相繼推出了一套 Turbo系列軟體, 如Turbo BASIC, Turbo Pascal, Turbo Prolog, 這些軟體很受用戶歡迎。
(1)c語言代碼優化工具擴展閱讀:
C編譯的整個過程很復雜,大致可以分為以下四個階段:
1、預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。
2、編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。
3、匯編階段將匯編語言翻譯成機器指令。
4、鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。
Ⅱ C語言編程現在通用什麼軟體
編程需要的工具,主要有3個:
1。編輯器,輸入源代碼
2。編譯器,把源代碼編譯成機器代碼
3。調試器,調試程序
有些軟體把這三個軟體柔和在一起,就叫做IDE,Integrate Development Environment. 集成開發環境。
你問的是IDE吧? 在windows下用VC嘛,
如果問的是編譯器,windows下用vc的編譯器,也就是cl.exe
linux下用gcc的多
Ⅲ c語言代碼優化
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
void main()
{
int i,j,m,n,result;
void tsy(int n);
srand(time(NULL));
i=1+rand()%3;
j=4+rand()%3; //這里除3餘數
m=1+rand()%9;
n=1+rand()%9;
printf("%d*%d\n",m,n);
printf("enter result:\n");
scanf("%d",&result);
if((m*n)==result)tsy(i);
else tsy(j);
printf("\n");
}
void tsy(int n)
{
switch(n)
{
case 1:{printf("Very good!\n");break;}
case 2:{printf("Excellent!\n");break;}
case 3:{printf("Keep up the good work!\n");break;}
case 4:{printf("No,please try again!\n");break;}
case 5:{printf("Wrong ,Try once more!\n");break;}
case 6:{printf("No.keep trying!\n");break;}
default:break;
}
}
Ⅳ 如何優化你的C代碼
一、程序結構的優化
1、程序的書寫結構
雖然書寫格式並不會影響生成的代碼質量,但是在實際編寫程序時還是應該尊循一定的書寫規則,一個書寫清晰、明了的程序,有利於以後的維護。在書寫程序時,特別是對於While、for、do…while、if…elst、switch…case等語句或這些語句嵌套組合時,應採用「縮格」的書寫形式,
2、標識符
程序中使用的用戶標識符除要遵循標識符的命名規則以外,一般不要用代數符號(如a、b、x1、y1)作為變數名,應選取具有相關含義的英文單詞(或縮寫)或漢語拼音作為標識符,以增加程序的可讀性,如:count、number1、red、work等。
3、程序結構
C語言是一種高級程序設計語言,提供了十分完備的規范化流程式控制制結構。因此在採用C語言設計單片機應用系統程序時,首先要注意盡可能採用結構化的程序設計方法,這樣可使整個應用系統程序結構清晰,便於調試和維護。於一個較大的應用程序,通常將整個程序按功能分成若干個模塊,不同模塊完成不同的功能。各個模塊可以分別編寫,甚至還可以由不同的程序員編寫,一般單個模塊完成的功能較為簡單,設計和調試也相對容易一些。在C語言中,一個函數就可以認為是一個模塊。所謂程序模塊化,不僅是要將整個程序劃分成若干個功能模塊,更重要的是,還應該注意保持各個模塊之間變數的相對獨立性,即保持模塊的獨立性,盡量少使用全局變數等。對於一些常用的功能模塊,還可以封裝為一個應用程序庫,以便需要時可以直接調用。但是在使用模塊化時,如果將模塊分成太細太小,又會導致程序的執行效率變低(進入和退出一個函數時保護和恢復寄存器佔用了一些時間)。
4、定義常數
在程序化設計過程中,對於經常使用的一些常數,如果將它直接寫到程序中去,一旦常數的數值發生變化,就必須逐個找出程序中所有的常數,並逐一進行修改,這樣必然會降低程序的可維護性。因此,應盡量當採用預處理命令方式來定義常數,而且還可以避免輸入錯誤。
5、減少判斷語句
能夠使用條件編譯(ifdef)的地方就使用條件編譯而不使用if語句,有利於減少編譯生成的代碼的長度,能夠不用判斷語句則少用判斷用語句。
6、表達式
對於一個表達式中各種運算執行的優先順序不太明確或容易混淆的地方,應當採用圓括弧明確指定它們的優先順序。一個表達式通常不能寫得太復雜,如果表達式太復雜,時間久了以後,自己也不容易看得懂,不利於以後的維護。
7、函數
對於程序中的函數,在使用之前,應對函數的類型進行說明,對函數類型的說明必須保證它與原來定義的函數類型一致,對於沒有參數和沒有返回值類型的函數應加上「void」說明。如果果需要縮短代碼的長度,可以將程序中一些公共的程序段定義為函數,在Keil中的高級別優化就是這樣的。如果需要縮短程序的執行時間,在程序調試結束後,將部分函數用宏定義來代替。注意,應該在程序調試結束後再定義宏,因為大多數編譯系統在宏展開之後才會報錯,這樣會增加排錯的難度。
8、盡量少用全局變數,多用局部變數。
因為全局變數是放在數據存儲器中,定義一個全局變數,MCU就少一個可以利用的數據存儲器空間,如果定義了太多的全局變數,會導致編譯器無足夠的內存可以分配。而局部變數大多定位於MCU內部的寄存器中,在絕大多數MCU中,使用寄存器操作速度比數據存儲器快,指令也更多更靈活,有利於生成質量更高的代碼,而且局部變數所的佔用的寄存器和數據存儲器在不同的模塊中可以重復利用。
9、設定合適的編譯程序選項
許多編譯程序有幾種不同的優化選項,在使用前應理解各優化選項的含義,然後選用最合適的一種優化方式。通常情況下一旦選用最高級優化,編譯程序會近乎病態地追求代碼優化,可能會影響程序的正確性,導致程序運行出錯。因此應熟悉所使用的編譯器,應知道哪些參數在優化時會受到影響,哪些參數不會受到影響。
在ICCAVR中,有「Default」和「Enable Code Compression」兩個優化選項。
在CodeVisionAVR中,「Tiny」和「small」兩種內存模式。
在IAR中,共有7種不同的內存模式選項。
在GCCAVR中優化選項更多,一不小心更容易選到不恰當的選項。
二、代碼的優化
1、選擇合適的演算法和數據結構
應該熟悉演算法語言,知道各種演算法的優缺點,具體資料請參見相應的參考資料,有很多計算機書籍上都有介紹。將比較慢的順序查找法用較快的二分查找或亂序查找法代替,插入排序或冒泡排序法用快速排序、合並排序或根排序代替,都可以大大提高程序執行的效率。.選擇一種合適的數據結構也很重要,比如你在一堆隨機存放的數中使用了大量的插入和刪除指令,那使用鏈表要快得多。
數組與指針語句具有十分密碼的關系,一般來說,指針比較靈活簡潔,而數組則比較直觀,容易理解。對於大部分的編譯器,使用指針比使用數組生成的代碼更短,執行效率更高。但是在Keil中則相反,使用數組比使用的指針生成的代碼更短。。
3、使用盡量小的數據類型
能夠使用字元型(char)定義的變數,就不要使用整型(int)變數來定義;能夠使用整型變數定義的變數就不要用長整型(long int),能不使用浮點型(float)變數就不要使用浮點型變數。當然,在定義變數後不要超過變數的作用范圍,如果超過變數的范圍賦值,C編譯器並不報錯,但程序運行結果卻錯了,而且這樣的錯誤很難發現。
在ICCAVR中,可以在Options中設定使用printf參數,盡量使用基本型參數(%c、%d、%x、%X、%u和%s格式說明符),少用長整型參數(%ld、%lu、%lx和%lX格式說明符),至於浮點型的參數(%f)則盡量不要使用,其它C編譯器也一樣。在其它條件不變的情況下,使用%f參數,會使生成的代碼的數量增加很多,執行速度降低。
4、使用自加、自減指令
通常使用自加、自減指令和復合賦值表達式(如a-=1及a+=1等)都能夠生成高質量的程序代碼,編譯器通常都能夠生成inc和dec之類的指令,而使用a=a+1或a=a-1之類的指令,有很多C編譯器都會生成二到三個位元組的指令。在AVR單片適用的ICCAVR、GCCAVR、IAR等C編譯器以上幾種書寫方式生成的代碼是一樣的,也能夠生成高質量的inc和dec之類的的代碼。
5、減少運算的強度
可以使用運算量小但功能相同的表達式替換原來復雜的的表達式。如下:
(1)、求余運算。
a=a%8;
可以改為:
a=a&7;
說明:位操作只需一個指令周期即可完成,而大部分的C編譯器的「%」運算均是調用子程序來完成,代碼長、執行速度慢。通常,只要求是求2n方的余數,均可使用位操作的方法來代替。
(2)、平方運算
a=pow(a,2.0);
可以改為:
a=a*a;
說明:在有內置硬體乘法器的單片機中(如51系列),乘法運算比求平方運算快得多,因為浮點數的求平方是通過調用子程序來實現的,在自帶硬體乘法器的AVR單片機中,如ATMega163中,乘法運算只需2個時鍾周期就可以完成。既使是在沒有內置硬體乘法器的AVR單片機中,乘法運算的子程序比平方運算的子程序代碼短,執行速度快。
如果是求3次方,如:
a=pow(a,3.0);
更改為:
a=a*a*a;
則效率的改善更明顯。
(3)、用移位實現乘除法運算
a=a*4;
b=b/4;
可以改為:
a=a<<2;
b=b>>2;
說明:通常如果需要乘以或除以2n,都可以用移位的方法代替。在ICCAVR中,如果乘以2n,都可以生成左移的代碼,而乘以其它的整數或除以任何數,均調用乘除法子程序。用移位的方法得到代碼比調用乘除法子程序生成的代碼效率高。實際上,只要是乘以或除以一個整數,均可以用移位的方法得到結果,如:
a=a*9
可以改為:
a=(a<<3)+a
6、循環
(1)、循環語
對於一些不需要循環變數參加運算的任務可以把它們放到循環外面,這里的任務包括表達式、函數的調用、指針運算、數組訪問等,應該將沒有必要執行多次的操作全部集合在一起,放到一個init的初始化程序中進行。
(2)、延時函數:
通常使用的延時函數均採用自加的形式:
void delay (void)
{
unsigned int i;
for (i=0;i<1000;i++)
;
}
將其改為自減延時函數:
void delay (void)
{
unsigned int i;
for (i=1000;i>0;i--)
;
}
兩個函數的延時效果相似,但幾乎所有的C編譯對後一種函數生成的代碼均比前一種代碼少1~3個位元組,因為幾乎所有的MCU均有為0轉移的指令,採用後一種方式能夠生成這類指令。
在使用while循環時也一樣,使用自減指令控制循環會比使用自加指令控制循環生成的代碼更少1~3個字母。
但是在循環中有通過循環變數「i」讀寫數組的指令時,使用預減循環時有可能使數組超界,要引起注意。
(3)while循環和do…while循環
用while循環時有以下兩種循環形式:
unsigned int i;
i=0;
while (i<1000)
{
i++;
//用戶程序
}
或:
unsigned int i;
i=1000;
do
i--;
//用戶程序
while (i>0);
在這兩種循環中,使用do…while循環編譯後生成的代碼的長度短於while循環。
7、查表
在程序中一般不進行非常復雜的運算,如浮點數的乘除及開方等,以及一些復雜的數學模型的插補運算,對這些即消耗時間又消費資源的運算,應盡量使用查表的方式,並且將數據表置於程序存儲區。如果直接生成所需的表比較困難,也盡量在啟動時先計算,然後在數據存儲器中生成所需的表,後以在程序運行直接查表就可以了,減少了程序執行過程中重復計算的工作量。
Ⅳ 學C語言現在最好用的編程軟體
GNU編譯器套裝
開發 The GNU Project
最新版本 4.4.2 / 2009-10-15(2個月前)
操作系統 跨平台
類型 編譯器
許可協議 GPL
網站 gcc.gnu.org
GCC(GNU Compiler Collection,GNU編譯器套裝),是一套由GNU開發的編程語言編譯器。它是一套以GPL及LGPL許可證所發行的自由軟體,也是GNU計劃的關鍵部分,亦是自由的類Unix及蘋果計算機Mac OS X 操作系統的標准編譯器。GCC(特別是其中的C語言編譯器)也常被認為是跨平台編譯器的事實標准。
GCC原名為GNU C語言編譯器(GNU C Compiler),因為它原本只能處理C語言。GCC很快地擴展,變得可處理C++。之後也變得可處理Fortran、Pascal、Objective-C、Java,以及Ada與其他語言。
目錄
[隱藏]
* 1 概觀
* 2 目前支持的語言
o 2.1 內嵌OpenMP支持
* 3 支持的處理器架構
* 4 結構
o 4.1 前端介面
o 4.2 中介介面
o 4.3 後端介面
* 5 替GCC程序除錯
* 6 參考書目及注釋
* 7 參閱
* 8 更多閱讀
* 9 外部鏈接
[編輯] 概觀
GCC是由理查德·馬修·斯托曼在1985年開始的。他首先擴增一個舊有的編譯器,使它能編譯C,這個編譯器一開始是以Pastel語言所寫的。Pastel是一個不可移植的Pascal語言特殊版,這個編譯器也只能編譯Pastel語言。為了讓自由軟體有一個編譯器,後來此編譯器由斯托曼和Len Tower在1987年[1]以C語言重寫[2]並成為GNU項目的編譯器。GCC的建立者由自由軟體基金會直接管理[3]。
在1997年,一群不滿GCC緩慢且封閉的創作環境者,組織了一個名為EGCS《Experimental/Enhanced GNU Compiler System》的項目,此項目匯整了數項實驗性的分支進入某個GCC項目的分支中。EGCS比起GCC的建構環境更有活力,且EGCS最終也在1999年四月成為GCC的官方版本。
GCC目前由世界各地不同的數個程序設計師小組維護。它是移植到中央處理器架構以及操作系統最多的編譯器。
由於GCC已成為GNU系統的官方編譯器(包括GNU/Linux家族),它也成為編譯與建立其他操作系統的主要編譯器,包括BSD家族、Mac OS X、NeXTSTEP與BeOS。
GCC通常是跨平台軟體的編譯器首選。有別於一般局限於特定系統與運行環境的編譯器,GCC在所有平台上都使用同一個前端處理程序,產生一樣的中介碼,因此此中介碼在各個其他平台上使用GCC編譯,有很大的機會可得到正確無誤的輸出程序。
[編輯] 目前支持的語言
以2006年5月24日釋出的4.1.1版為准,本編譯器版本可處理下列語言:
* Ada 《GNAT》
* C 《GCC》
* C++(G++)
* Fortran 《Fortran 77: G77,Fortran 90: GFORTRAN》
* Java 《編譯器:GCJ;解釋器:GIJ》
* Objective-C 《GOBJC》
* Objective-C++
先前版本納入的CHILL前端由於缺乏維護而被廢棄。
Fortran前端在4.0版之前是G77,此前端僅支持Fortran 77。在本版本中,G77被廢棄而採用更新的GFortran,因為此前端支持Fortran 95。
下列前端依然存在:
* Mola-2
* Mola-3
* Pascal
* PL/I
* D語言
* Mercury
* VHDL
[編輯] 內嵌OpenMP支持
OpenMP是一種跨語言的對稱多處理器(SMP)多線程並行程序的編程工具,也非常適合當今越來越流行的單CPU多核硬體環境,因此從gcc4.2開始,OpenMP成為其內嵌支持的並行編程規范,可以直接編譯內嵌 OpenMP語句的C/C++/Fortran95的源代碼。gcc4.2之前如果想在C/C++/Fortran中嵌入OpenMP語句的話,需要額外安裝庫和預處理器才能識別和正確處理這些語句。
* gcc 4.2.0開始支持OpenMP v2.5
* gcc 4.4.0開始支持OpenMP v2.5及v3.0
參見GNU的GOMP計劃
[編輯] 支持的處理器架構
GCC目前支持下列處理器架構(以4.1版為准):
* Alpha
* ARM
* Atmel AVR
* Blackfin
* H8/300
* IA-32(x86)與x86-64
* IA-64例如:Itanium
* MorphoSys家族
* Motorola 68000
* Motorola 88000
* MIPS
* PA-RISC
* PDP-11
* PowerPC
* System/370,System/390
* SuperH
* HC12
* SPARC
* VAX
* Renesas R8C/M16C/M32C家族
較不知名的處理器架構也在官方釋出版本中支持:
* A29K
* ARC
* C4x
* CRIS
* D30V
* DSP16xx
* FR-30
* FR-V
* Intel i960
* IP2000
* M32R
* 68HC11
* MCORE
* MMIX
* MN10200
* MN10300
* NS32K
* ROMP
* Stormy16
* V850
* Xtensa
由FSF個別維護的GCC處理器架構:
* D10V
* MicroBlaze
* PDP-10
* MSP430
* Z8000
當GCC需要移植到一個新平台上,通常使用此平台固有的語言來撰寫其初始階段。
[編輯] 結構
GCC的外部介面長得像一個標準的Unix編譯器。用戶在命令行下鍵入gcc之程序名,以及一些命令參數,以便決定每個輸入文件使用的個別語言編譯器,並為輸出代碼使用適合此硬體平台的匯編語言編譯器,並且選擇性地運行連接器以製造可運行的程序。
每個語言編譯器都是獨立程序,此程序可處理輸入的源代碼,並輸出匯編語言碼。全部的語言編譯器都擁有共通的中介架構:一個前端解析符合此語言的源代碼,並產生一抽象語法樹,以及一翻譯此語法樹成為GCC的寄存器轉換語言《RTL》的後端。編譯器優化與靜態代碼解析技術(例如FORTIFY_SOURCE[1],一個試圖發現緩存溢出《buffer overflow》的編譯器)在此階段應用於代碼上。最後,適用於此硬體架構的匯編語言代碼以Jack Davidson與Chris Fraser發明的演算法產出。
幾乎全部的GCC都由C寫成,除了Ada前端大部分以Ada寫成。
[編輯] 前端介面
前端的功能在於產生一個可讓後端處理之語法樹。此語法解析器是手寫之遞回語法解析器。
直到最近,程序的語法樹結構尚無法與欲產出的處理器架構脫鉤。而語法樹的規則有時在不同的語言前端也不一樣,有些前端會提供它們特別的語法樹規則。
在2005年,兩種與語言脫鉤的新型態語法樹納入GCC中。它們稱為GENERIC與GIMPLE。語法解析變成產生與語言相關的暫時語法樹,再將它們轉成GENERIC。之後再使用"gimplifier"技術降低GENERIC的復雜結構,成為一較簡單的靜態唯一形式(Static Single Assignment form,SSA)基礎的GIMPLE形式。此形式是一個與語言和處理器架構脫鉤的全局優化通用語言,適用於大多數的現代編程語言。
[編輯] 中介介面
一般編譯器作者會將語法樹的優化放在前端,但其實此步驟並不看語言的種類而有不同,且不需要用到語法解析器。因此GCC作者們將此步驟歸入通稱為中介階段的部分里。此類的優化包括消解死碼、消解重復計算與全局數值重編碼等。許多優化技巧也正在實現中。
[編輯] 後端介面
GCC後端的行為因不同的前處理器宏和特定架構的功能而不同,例如不同的字元尺寸、調用方式與大小尾序等。後端介面的前半部利用這些消息決定其RTL的生成形式,因此雖然GCC的RTL理論上不受處理器影響,但在此階段其抽象指令已被轉換成目標架構的格式。
GCC的優化技巧依其釋出版本而有很大不同,但都包含了標準的優化演算法,例如循環優化、線程跳躍、共通程序子句消減、指令調度等等。而RTL的優化由於可用的情形較少,且缺乏較高級的信息,因此比較起近來增加的GIMPLE語法樹形式[2],便顯得比較不重要。
後端經由一重讀取步驟後,利用描述目標處理器的指令集時所取得的信息,將抽象寄存器替換成處理器的真實寄存器。此階段非常復雜,因為它必須關照所有GCC可移植平台的處理器指令集的規格與技術細節。
後端的最後步驟相當公式化,僅僅將前一階段得到的匯編語言碼藉由簡單的副函數轉換其寄存器與存儲器位置成相對應的機器碼。
[編輯] 替GCC程序除錯
為GCC除錯的首選工具當然是GNU除錯器。其他特殊用途的除錯工具是Valgrind,用以發現存儲器泄漏 (Memory leak)。而GNU測量器(gprof)可以得知程序中某些函數花費多少時間,以及其調用頻率;此功能需要用戶在編譯時選定測量《profiling》選項。
[編輯] 參考書目及注釋
* Richard M. Stallman:Using and Porting the GNU Compiler Collection, Free Software Foundation,ISBN 0-595-10035-X
* Richard M. Stallman: Using Gcc: The Gnu Compiler Collection Reference, Free Software Foundation, ISBN 1-882114-39-6
* Brian J. Gough:An Introction to GCC, Network Theory Ltd., ISBN 0-9541617-9-3
1. ^ Tower, Leonard (1987) "GNU C編譯器beta測試版釋出" comp.lang.misc USENET新聞組;參閱http://gcc.gnu.org/releases.html#timeline
2. ^ Stallman, Richard M.(1986年2月1日).GNU狀態.GNU的公告版,1(1).自由軟體基金會.
3. ^ Stallman, Richard M. (2001) "GCC貢獻者名單"於使用及移植GCC 2.95版(Cambridge, Mass.: Free Software Foundation)
[編輯] 參閱
[[File:|36x32px|自由軟體主題]] 自由軟體主題首頁
GCC目前包含了Boehm GC,一個為C/C++ 所設計的垃圾回收器。
* distcc - 為分布式編譯所設計的軟體,以GCC為協同軟體。
* LLVM - 低層虛擬機編譯器架構。
* MinGW - 將GNU開發工具移植到Win32平台下的計劃
* Cygwin - 在Windows上運行GNU程序的模擬軟體。
* GCC Summit
* OpenWatcom - 另一個開放原碼的C++/Fortran編譯器。
* Code Sourcery - 一個GCC顧問公司。
* ggcc - 全球化GCC項目。
[編輯] 更多閱讀
* Arthur Griffith, GCC: The Complete Reference. McGrawHill/Osborne. ISBN 0-07-222405-3.
* Kerner, Sean Michael.Open Source GCC 4.0: Older, Faster,internetnews.com,2005年4月22日.
* Kerner, Sean Michael.New GCC Heavy on Optimization,internetnews.com,2006年3月2日.
[編輯] 外部鏈接
* GCC官方網站
* GCC Forum - 由Nabble維持,整理所有gcc通信討論串,並集成入一個可搜索介面中。
Ⅵ C語言編程有哪些好用的軟體
1.C語言編程軟體有哪些。
Mcrosoft Visual C++ 、Microsoft Visual Studio、 DEV C++、Code::Blocks、Borland C++、WaTCom C++、Borland C++ Builder、GNU DJGPP C++、Lccwin32 C Compiler3.1、High C、Turb C、gcc、C-Free和Win-TC、My Tc等等,由於C語言比較成熟,所以編程環境很多。
2.C語言入門,不推薦使用VC,因為VC不但龐大,而且應用開發比較高級。入門編程薦使用Dev-C 和 WIN-TC。
1)WIN-TC,該軟體使用TC2為內核,提供WINDOWS平台的開發界面,因此也就支持WINDOWS平台下的功能,例如剪切、復制、粘貼和查找替換等。而且在功能上也有它的獨特特色例如語法加亮、C內嵌匯編、自定義擴展庫的支持等。並提供一組相關輔助工具令你在編程過程中更加游刃有餘。
2)Dev-C ,Dev-C 是一個Windows下的C和C 程序的集成開發環境。它使用MingW32/GCC編譯器,遵循C/C 標准。開發環境包括多頁面窗口、工程編輯器以及調試器等,在工程編輯器中集合了編輯器、編譯器、連接程序和執行程序,提供高亮度語法顯示的,以減少編輯錯誤,還有完善的調試功能,能夠適合初學者與編程高手的不同需求,是學習C或C的首選開發工具。
Ⅶ c語言程序單元測試用什麼工具比較好
C++test是一個很好的工具,很全面,設置麻煩一點有興趣可以了解一下 http://bbs.51testing.com/thread-42641-1-1.html開源的有CPPunit
Ⅷ 幾種C語言優化代碼技巧
以下內容摘自李亞鋒先生的《經典C面試真題精講》
1.結構體設計為成員最長類型長度的整數倍;
2.減少函數參數的個數,不需要返回值的函數定義為void類型;
3.if...else....多條件分支語句中,把出現頻率高的條件放在前面;
4.同時聲明多個相同類型變數優於分別單獨聲明變數;
5.減少定義全局變數;
6.使用#define定義常量和小的函數實現;
7.有些情況嵌套匯編語句效率更高;
8.佔用大的存儲空間可以減少執行時間,同理時間也可以換取空間;
9提高程序演算法效率;
Ⅸ 尋找編寫c語言的軟體
Visual Studio C++
Visual Studio 是一套完整的開發工具集,用於生成 ASP.NET Web 應用程序、XML Web Services、桌面應用程序和移動應用程序。Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成開發環境 (IDE),利用此 IDE 可以共享工具且有助於創建混合語言解決方案。另外,這些語言利用了 .NET Framework 的功能,通過此框架可使用簡化 ASP Web 應用程序和 XML Web Services 開發的關鍵技術。 創建滿足關鍵性要求的多層次的智能客戶端、Web、移動或基於Microsoft Office的應用程序。使用Visual Studio 2005, 專業開發人員能夠:
使用改進後的可視化設計工具、編程語言和代碼編輯器,享受高效率的開發環境
在統一的開發環境中,開發並調試多層次的伺服器應用程序
使用集成的可視化資料庫設計和報告工具,創建SQL Server 2005解決方案
使用Visual Studio SDK創建可以擴展Visual Studio IDE的工具
Microsoft為單獨工作或在小型團隊中的專業開發人員提供了兩種選擇,Visual Studio 2005 Professional Edition和用於Microsoft Office系統的Visual Studio 2005工具。每種版本都在標准版的特性上進行了擴展,包括用於遠程服務程序開發和調試、SQL Server2005開發的工具,以及完整的、沒有限制的開發環境。每種產品都可以單獨購買或打包定購。
專業開發人員喜歡自由的使用.NET Framework 2.0,它是一種穩健的、功能齊備的開發環境,支持創建擴展Visual Studio集成開發環境的工具。
[編輯本段]主要部分
公共語言運行庫
運行庫實際上在組件的運行時和開發時操作中都起到很大的作用,盡管名稱中沒有體現這個意思。在組件運行時,運行庫除了負責滿足此組件在其他組件上可能具有的依賴項外,還負責管理內存分配、啟動和停止線程和進程,以及強制執行安全策略。在開發時,運行庫的作用稍有變化;由於做了大量的自動處理工作(如內存管理),運行庫使開發人員的操作非常簡單,尤其是與今天的 COM 相比。特別是反射等功能顯著減少了開發人員為將業務邏輯轉變為可重用組件而必須編寫的代碼量。
統一編程類
該框架為開發人員提供了統一的、面向對象的、分層的和可擴展的類庫集 (API)。目前,C++ 開發人員使用 Microsoft 基礎類,而 Java 開發人員使用 Windows 基礎類。該框架統一了這些完全不同的模型,還為 Visual Basic 和 JScript 程序員提供了對類庫的訪問。通過創建跨所有編程語言的公共 API 集,公共語言運行庫使得跨語言繼承、錯誤處理和調試成為可能。從 JScript 到 C++ 的所有編程語言具有對框架的相似訪問,開發人員可以自由選擇它們要使用的語言。
ASP.NET
ASP.NET 建立在 .NET Framework 的編程類的基礎上,為 Web 應用程序模型提供了一組可簡化 Web 應用程序生成的控制項和基礎結構。ASP.NET 包括可用於封裝通用 HTML 用戶界面元素(如文本框、按鈕和列表框)的一組控制項。但這些控制項在 Web 伺服器上運行,並以 HTML 的形式將其用戶界面呈現在瀏覽器中。在伺服器上,這些控制項公布面向對象的編程模型,該模型為 Web 開發人員提供面向對象編程的豐富功能。ASP.NET 還提供基礎結構服務,如狀態管理和進程回收,從而可以進一步減少開發人員必須編寫的代碼數量,並提高應用程序的可靠性。另外,ASP.NET 使用這些同樣的概念使開發人員能夠以服務的形式交付軟體。使用 XML Web Services 功能,ASP.NET 開發人員可以編寫他們的業務邏輯,並使用 ASP.NET 基礎結構通過 SOAP 交付該服務。有關更多信息,請參見使用託管代碼進行 XML Web services 編程簡介。
[編輯本段]內容
應用程序
Visual Studio 集成環境包括用於目標設備(如 PDA 和 Smartphone)的工具。改進功能包括 Visual C++ 工具和本機設備運行庫、託管設計器(提供改進的特定於平台的 WYSIWYG 和多種外觀設置支持)、新的模擬程序、類似於桌面的數據處理工具,以及最終用戶部署項目(消除 .inf 文件的手動編輯工作)。有關更多信息,請參見智能設備項目中的新增功能。
Web 窗體
Web 窗體是用於創建可編程網頁的 ASP.NET 技術。Web 窗體將自己呈現為瀏覽器兼容的 HTML 和腳本,這使任何平台上的任何瀏覽器都可以查看 Web 頁。使用 Web 窗體,通過將控制項拖放到設計器上然後添加代碼來創建 Web 頁,與創建 Visual Basic 窗體的方法相似。有關更多信息,請參見 ASP.NET 網頁概述。
Windows 窗體
Windows 窗體用於在 .NET Framework 上創建 Microsoft Windows 應用程序。此框架提供一個有條理的、面向對象的、可擴展的類集,使您能夠開發功能豐富的 Windows 應用程序。另外,Windows 窗體可作為多層分布式解決方案中的本地用戶界面。有關更多信息,請參見 Windows 窗體介紹。
XML Web services
XML Web Services 是可以通過 HTTP 使用 XML 接收請求和數據的應用程序。XML Web Services 並不依賴於特定的組件技術或對象調用約定,因此可以通過任何語言、組件模型或操作系統進行訪問。在 Visual Studio 中,可以使用 Visual Basic、Visual C#、JScript 或 ATL Server 快速創建和包含 XML Web Services。有關更多信息,請參見使用託管代碼進行 XML Web services 編程簡介。
XML 支持
可擴展標記語言 (XML) 提供描述結構數據的方法。XML 是為在 Web 上傳送而進行優化了的 SGML 的子集。萬維網聯合會 (W3C) 定義了 XML 標准以使結構化數據保持統一並獨立於應用程序。Visual Studio 完全支持 XML,同時提供了 XML 設計器,使得更容易編輯 XML 和創建 XML 架構。有關更多信息,請參見 XML 設計器。
[編輯本段]系統要求
1 支持的體系結構
x86
x64 (WOW)
2. 支持的操作系統
Microsoft Windows XP
Microsoft Windows Server 2003 Service Pack 2
Microsoft Windows Server 2008
Windows Vista
Windows 7
3. 硬體要求
最低要求:1.6 GHz CPU,192 MB 內存,1024x768 顯示器,5400 RPM 硬碟
建議配置:2.2 GHz 或更快的 CPU,384 MB 或更大的內存,1280x1024 顯示器,7200 RPM 或更快的硬碟
在 Windows Vista 上:2.4 GHz CPU,768 MB 內存
完全安裝需要 1.3 GB 可用磁碟空間
[編輯本段]歷史沿革
Visual Studio 6.0
1998 年,微軟公司發布了 Visual Studio 6.0。所有開發語言的開發環境版本均升至 6.0。這也是 Visual Basic 最後一次發布,從下一個版本 (7.0) 開始,Microsoft Visual Basic 進化成了一種新的面向對象的語言:Microsoft Visual Basic.NET。由於微軟公司對於 Sun 公司 Java 語言擴充導致與 Java 虛擬機不兼容而 被Sun 告上法庭,微軟在後續的 Visual Studio 中不再包括面向 Java 虛擬機的開發環境。
Visual Studio .NET
2002 年 Visual Studio .NET(內部版本號為 7.0)。在這個版本的 Visual Studio 中,微軟剝離了 Visual FoxPro 作為一個單獨的開發環境以 Visual FoxPro 7.0 單獨銷售,同時取消了 Visual InterDev。與此同時,微軟引入了建立在 .NET 框架上(版本1.0)的託管代碼機制以及一門新的語言 C# (讀作 C Sharp,意為 C++++)。C# 是一門建立在 C++ 和 Java 基礎上的現代語言,是編寫 .NET 框架的語言。NET 的通用語言框架機制(Common Language Runtime, CLR),其目的是在同一個項目中支持不同的語言所開發的組件。所有 CLR 支持的代碼都會被解釋成為 CLR 可執行的機器代碼然後運行。 Visual Basic、Visual C++ 都被擴展為支持託管代碼機制的開發環境,且 Visual Basic .NET更是從 Visual Basic 脫胎換骨,徹底支持面向對象的編程機制。而 Visual J++ 也變為 Visual J#。後者僅語法同 Java 相同,但是面向的不是 Java 虛擬機,而是 .NET Framework。
Visual Studio 2003
2003 年,微軟對 Visual Studio 2002 進行了部分修訂,以 Visual Studio 2003 的名義發布(內部版本號為 7.1)。Visio 作為使用統一建模語言(UML)架構應用程序框架的程序被引入,同時被引入的還包括移動設備支持和企業模版。.NET 框架也升級到了 1.1。
Visual Studio 2005
2005 年,微軟發布了 Visual Studio 2005。.NET 字眼從各種語言的名字中被抹去,但是這個版本的 Visual Studio 仍然還是面向 .NET 框架的(版本2.0)。它同時也能開發跨平台的應用程序,如開發使用微軟操作系統的手機的程序等。總體來說是一個非常龐大的軟體,甚至包含代碼測試功能。這個版本的 Visual Studio 包含有眾多版本,分別面向不同的開發角色。同時還永久提供免費的 Visual Studio Express 版本。
Visual Studio 2008
Microsoft Visual Studio 2008 使開發人員能夠快速創建高質量、用戶體驗豐富而又緊密聯系的應用程序,充分展示了 Microsoft 開發智能客戶端應用程序的構想。藉助 Visual Studio 2008,採集和分析信息將變得更為簡單便捷,業務決策也會因此變得更為有效。任何規模的組織都可以使用 Visual Studio 2008 快速創建能夠利用 Windows Vista™ 和 2007 Office system 的更安全、更易於管理並且更可靠的應用程序。
Visual Studio 2008 在三個方面為開發人員提供了關鍵改進:
1.快速的應用程序開發
2.高效的團隊協作
3.突破性的用戶體驗
Visual Studio 9
隨著即將發布的 Windows Vista (內部名稱:Longhorn) 和 Office 2007,Visual Studio 9 也漸漸浮出水面。Visual Studio 9 目前可以確定的是支持建立於 DHTML 基礎上的 AJax 技術,這種微軟在 Visual InterDev 時代提出的基於非同步的客戶端動態網頁技術在當年並沒有像微軟預期中的那麼流行起來,反而隨著 GMail 等應用而東山再起,漸漸成為主流網路應用之一。同時 Visual Studio 9 會強化對於資料庫的支持以及微軟新的基於工作流(Workflow)的編程模型。預計為了保持與 Office 系列的統一,Visual Studio 9 的名稱為 Visual Studio 2008。2008年,Visual Studio9也就是Visual Studio 2008將和Windows Server 2008同時發布。
Visual Studio 2010
Visual Studio 是微軟公司推出的開發環境。是目前最流行的 Windows 平台應用程序開發環境。目前已經開發到 10.0 版本。
Visual Studio 2008 提供了高級開發工具、調試功能、資料庫功能和創新功能,幫助在各種平台上快速創建當前最先進的應用程序。
Visual Studio 2008 包括各種增強功能,例如可視化設計器(使用 .NET Framework 3.5 加速開發)、對 Web 開發工具的大量改進,以及能夠加速開發和處理所有類型數據的語言增強功能。Visual Studio 2008 為開發人員提供了所有相關的工具和框架支持,幫助創建引人注目的、令人印象深刻並支持 AJAX 的 Web 應用程序。
開發人員能夠利用這些豐富的客戶端和伺服器端框架輕松構建以客戶為中心的 Web 應用程序,這些應用程序可以集成任何後端數據提供程序、在任何當前瀏覽器內運行並完全訪問 ASP.NET 應用程序服務和 Microsoft 平台。
快速的應用程序開發
為了幫助開發人員迅速創建先進的軟體,Visual Studio 2008 提供了改進的語言和數據功能,例如語言集成的查詢 (LINQ),各個編程人員可以利用這些功能更輕松地構建解決方案以分析和處理信息。
Visual Studio 2008 還使開發人員能夠從同一開發環境內創建面向多個 .NET Framework 版本的應用程序。開發人員能夠構建面向 .NET Framework 2.0、3.0 或 3.5 的應用程序,意味他們可以在同一環境中支持各種各樣的項目。
突破性的用戶體驗
Visual Studio 2008 為開發人員提供了在最新平台上加速創建緊密聯系的應用程序的新工具,這些平台包括 Web、Windows Vista、Office 2007、SQL Server 2008 和 Windows Server 2008。對於 Web,ASP.NET AJAX 及其他新技術使開發人員能夠迅速創建更高效、互動式更強和更個性化的新一代 Web 體驗。
高效的團隊協作
Visual Studio 2008 提供了幫助開發團隊改進協作的擴展的和改進的服務項目,包括幫助將資料庫專業人員和圖形設計人員加入到開發流程的工具。
使用 Microsoft .NET Framework 3.5
.NET Framework 提供了用於解決常見編程任務的構建基塊(預制的軟體),從而能夠快速構造具有出色的最終用戶體驗的緊密聯系的應用程序。在 .NET Framework 模型業務流程上有效構建的緊密聯系的應用程序有利於在異類環境中實現系統集成。
Visual Studio 和 .NET Framework 的結合使用減少了對公用管道代碼的需要,從而縮短了開發時間並使開發人員能夠集中精力解決業務問題。
.NET Framework 3.5 是在 .NET Framework 3.0 的基礎上構建的更高版本。得到增強的功能領域包括基類庫、Windows workflow foundation、Windows Communication Foundation、Windows Presentation Foundation 和 Windows CardSpace。
開發人員使用 Visual Studio 2008 專業版能夠:集成的單元測試能夠更有效的驗證應用程序。應用程序的單元測試能夠幫助我們在開發過程的早期輕松發現大量的問題。現在,Visual Studio 2008 專業版中集成了單元測試功能,以前這個功能只在 Visual Studio Team System 產品中提供。
使用 Microsoft Office 系統開發用戶熟悉的應用程序。Visual studio 2008 專業版現在包括了Visual Studio Tools For Office, 這意味著我們的應用程序能夠輕松融合世界上最流行的軟體產品 -- -- Microsoft Office System。比如,開發人員能夠直接將ERP的信息集成到 Office Outlook 的任務面板,這樣用戶就能夠更輕松的訪問到商務決策。
讓您的用戶能夠使用到 Windows Mobile 的應用程序。Visual Studio 2008 專業版讓 Mobile 應用程序的開發變得更加簡單。全新的設備模擬器能夠自動化測試場景,讓您在近似於真實環境中進行應用程序的開發,比如:信號衰弱或電量不足。Mobile 開發人員能夠充分利用到一些更高級的特性,比如:LINQ 和單元測試。開發人員現在能夠擴展和整合用戶體驗,將豐富的多媒體用戶體驗發布到任何能夠訪問 Internet 的設備上。