⑴ 請問linux下,gcc編譯程序的過程(從讀取源文件到製作可執行程序中間所有過程,越詳細越好)
gcc -S *.c 預處理+反匯編
⑵ 新手如何學習編程
熟悉以下關鍵東西,可以邊學邊做,定期訓練,經常思考,長期積累:
1、語法。
2、基礎理論(數學、數據結構、演算法等)。
3、設計方法(編程原則、設計模式、框架設計等)。
4、庫(核心、基礎、UI、擴展、游戲引擎等)。
5、計算機相關(操作系統、網路、圖形學等)。
6、領域知識(游戲設計、網站設計等)。
7、開發工具(編輯器、IDE、自動部署等)。
8、項目管理(進度管理、分工協作、Bug管理、版本控制等)。
最普遍也是最重要的能力:創造力。努力分析並理解好做什麼以及怎麼做。要知道上面那些東西一開始都是不存在的。
具體方法包括:
1、快速閱讀入門教程和書籍,適合學習語言和基礎庫。比如我學Java讀的《Java編程思想》,練習題做過一點,然後學ActionScript就沒讀過書,只讀過Adobe官方文檔《ActionScript 3.0編程》。
2、閱讀庫的文檔、實例、源碼。比如Flash、Flex開發,熟悉官方API很重要,很多細節要具體使用時才注意到,這時候最好做個筆記,雖然我從沒看過我的筆記。
3、做一個自己感興趣或熟悉的小項目,比如我就以黑白棋游戲作為多個語言的試水項目,一樣的邏輯,便於把關注點放在語言特點上。
4、自己動手豐衣足食。廚師有菜譜,程序員可沒菜譜。比如我做游戲,最關鍵的游戲編程知識全部是動手學出來的,很少有專門針對某個業務領域(如游戲)的編程書籍,要麼是入門書,要麼是模式書(如演算法)、理論書(圖形學),很少有書籍教你如何開發一個45度角地圖系統加編輯器的,全靠自己思考,以及看前人的代碼,需要時找些網路資料。關鍵是,可以培養最重要的創造力。
對於演算法和設計模式,可以研讀下,但是關鍵還是靠平時如何使用了。新手勉強不來的。
項目管理方面的,就得靠工作經驗了,多思考多提意見不要只走流程。
⑶ 有經驗的C語言程序常說的「內存對齊」,原因究竟是什麼
在C語言程序開發中,有時有經驗的程序員會提起「內存對齊」一詞,事實上,這也是C語言中結構體的 size 不等於它所有成員 size 之和的原因(C語言中的結構體的size,並不等於它所有成員size之和,為什麼?),那麼,C語言程序為什麼要「內存對齊」呢?
事實上,本節只是粗淺討論,處理器的內存系統比這里描述的要復雜得多,涉及的內容也要復雜得多。不過,我們至少已經知道,在C語言程序中堅持內存對齊還是有很多好處的。
⑷ C語言是用什麼編寫出來的
C語言通過語言開發出來的。
C語言是Dennis Ritchie 在1972年通過Thompson的B語言的基礎之上開發出來的。C是作為從事實際編程工作的程序的一種工具而出現的,所以其主要目標是成為一種有用的語言。同時, C 也是為編程人員開發的語言,這使得它成為當今人們首先的編程語言之一。
C已經成為最重要和流行的編程語言之一。它之所以得到發展,是因為人們嘗試使用它後喜歡它。過去10年中,許多人從C轉而使用更強大的C++語言,但C有其自身的優勢,仍然是一種重要的語言,而且它還是通往C++的必由之路。
(4)現代c語言編譯器擴展閱讀
C語言特點
1、設計特性:C是一種融合了控制特性的現代語言,而我們已發現在計算機科學的理論和實踐中,控制特性是很重要的。
2、高效性: C是一種高效的語言。 在設計上它充分利用了當前計算機在能力上的優點。C程序往往很緊湊且運行速度快。
3、可移植性:C是一種可移植語言。在一個系統上編寫的C程序經過很少改動或不經修改就可以其他系統上運行。
⑸ Bloodshed Dev-C++ 與VC++有什麼區別
vc++是MS家族的c++開發語言兼環境。
dev-c++是GCC家族的一個c++ IDE,IDE相對VC++較差,不帶編譯器的,可以掛gnu等編譯器。
簡介:
c++編譯器是一個與標准化C++高度兼容的編譯環境。這點對於編譯可移植的代碼十分重要。編譯器對不同的CPU會進行不同的優化。編譯器就是將「高級語言」翻譯為「機器語言(低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) →預處理器 (preprocessor) → 編譯器 (compiler) → 匯編程序 (assembler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)。
C++編譯器分類:
GCC家族
Cygwin
Mingw32
DJGPP
Dev-C++(Mingw32)
還有正宗的GNU GCC 2.95.5~3.0.0.4版本
GNU C++
g++是一個開源的C++編譯器,GCC3.3對標准化C++的支持達96.15%。
值得一提的是,gcc是gnu c的編譯器, g++是gnu c++的編譯器, 而egcs(Enhanced GNU Compiler Suite)可以認為是gcc的改進版。目前gcc已經改名,從原來代表GNU C Compiler改變為代表GNU Compiler Collection。而MinGW或Cgywin,是在windows平台上的gnu c/c++編譯器,以及庫文件,運行環境的集合。
在GCC家族中GNU GCC是根本,其它的編譯器版本都是從它導出的。其中,Cygwin和Mingw32都是WIN32平台下的編譯器,DJGPP是DOS下的32位編譯器。大家所熟知的DEV-C++充其量只是GCC的一個外殼,它所自帶的編譯器就是Mingw32的一個版本。這些GCC的版本中,Cygwin是最大的,它與其說是一個編譯器,倒不如說是一套編程工具。它不僅有編譯器,還有其它很多的工具。其實,它就是一個UNIX系統在WIN32平台上的實現。實現了大多常用的UNIX工具,最近的版本中連Apache這樣的「工具」都集成進來的。不過,Cygwin雖然功能強大,但它卻不是很易用(和UNIX相似,熟悉UNIX的人用它可以很快上手),因為太多其它的工具分散了人們的注意力。相比之下Mingw32就要好用得多,它只有最基本的幾個編程工具(只可惜它不自帶GDB)。GCC中並不只是C/C++編譯器,其中還有很多其它的編譯器如JAVA,Fortran,ADA等。它是一個編譯器集合,不過有些編譯器只能在UNIX系統上用。
MS家族
MSC 5.0、6.0、7.0
MSQC 1.0、2.5
MSVC 1.0、4.2、6.0、7.0
Visual C++
VC++6.0對標准化C++的兼容僅達83.43%。
它是Visual Studio、Visual Studio.net 2002、Visual Studio.net 2003、Visual Studio.net 2005的後台C++編譯器。隨著Stanley Lippman等編譯器設計大師的加盟,它變得非常成熟可靠了。Visual C++ 7.1對標准C++的兼容性達到98.22%。
Borland家族
TC 1.0、2.0
TC++ 1.01、3.0
BC 3.0、3.1、4.0、4.5、5.0、5.02
BCB 3.0、5.0、6.0
Borland C++
該編譯以速度快、空間效率高而著稱。它的5.5版本對標准化C++的支持達92.73%,而官方稱100%符合ANSI/ISO的C++標准和C99標准。
它是Borland公司開發的,是Borland C++ Builder和Borland C++ Builder X這兩種IDE的後台編譯器。
其它
Intel C/C++ 5.0
Watcom C/C++ 11.0、11.0c
VectorC 1.3.3
IBM VisualAge for C++
DigitalMars C/C++
KAI C/C++ 4.03f for RedHat 7.2
Lcc4.1
LCC-WIN32 2001-09-25~2002-04-28日版
Small C
CC386
Pacific C
Intel C/C++大家一看名稱就知道是Intel的東西,它和VC6完全兼容,不過要掛在VC6下才能用。Watcom C/C++是早先編譯器四國大戰中的一員,原本是很不錯的東西,可惜戰略不對,現在已不見聲息了。倒是以它為基礎的一個OpenWatcom現在還在奮戰。VectorC是我近日才發現的一個好東東,它是個純C的編譯器。IBM的VisualAge for C++原本是IBM想用來淌C++編譯器這片渾水的東西,不過IBM的戰略改了,它就被放棄了。DigitalMars C/C++的前身的Symantec C++(它也是編譯器四國大戰中的一員),不過現在Symantec不做了,於是它的作者就把它改成了DigitalMars C/C++開放給大家使用。以上這些都是WIN32平台上的東西。KAI C/C++是個很強大的C/C++編譯器,它是個多平台的編譯器。不過現在被INTEL收購了,已經停止開發了。Lcc4.1是個純C的編譯器它是開放源代碼的。不過不怎麼好用。LCC-WIN32是一個在LCC基礎上開發的C語言的集成開發環境,很好用,而且有很詳細的資料,FREE!Pacific C是一個純DOS的C的集成開發環境,就不多說了。Small C CC386都是開放源代碼的編譯器,它們都很簡單,應用來給大家學習編譯器的。