ansi編譯器
① 編譯器不符合ANSI C++規范的部分的表現是什麼
一般是指「原本該通過編譯的 沒有 通過編譯」
比如最常見的不符合ANSI C++規范的編譯器是vc6
這么寫
for (int i = 0; i < 100; i++) {
...
}
for (int i = 0; i < 10; i++) {
...
}
編譯就不通過
而C99標準是支持這樣的定義的。vc6默認的i的生命周期和C99標准不一樣,導致編譯不通過,認為後一個i是重復定義了
而一般編譯器都有「原本 不 該通過編譯的 通過編譯了」的情況
那是因為某些原因對標准C做了擴展
比如GCC就有很多擴展(語句表達式,可變參數宏,等等)
這些擴展是ANSI C++裡面沒有的,卻在linux內核代碼裡面扮演重要的角色
編譯器的擴展增大了各編譯器之間的差異,降低了某些源代碼的可移植性
不過現在vc2008做的不錯了,比較符合最新的標准C規范
所以建議寫代碼的時候,如果沒有必要,最好遵守標准C規范
網上可以找到ANSI C的yacc語法文件,你可以研究下(不懂yacc的就看bison幫助文檔)
-----------------------------------------
以上內容為本人原創,謝謝
② 急,誰能告訴我ANSI / ISO C++編譯器是什麼東東
ANSI / ISO是一個標准
美國國家標准協會。由公司、政府和其他成員組成的自願組織。它們協商與標准有關的活動,審議美國國家標准,並努力提高美國在國際標准化組織中的地位。此外,ANSI使有關通信和網路方面的國際標准和美國標准得到發展。ANSI是IEC和ISO的成員之一。
American National Standards Institute(ANSI——美國國家標准局)
ANSI是一個准國家式的標准機構,它為那些在特定領域建立標準的組織提供區域許可,如電氣電子工程師協會(IEEE)。這個詞也常常用來表示計算機使用的低級代碼表。
ANSI是國際標准化委員會(ISO)和國際電工委員會(IEC)5個常任理事成員之一,4個理事局成員之一,參加79%的ISO/TC的活動,參加89%的IEC/TC活動。ANSI 是泛美技術標准委員會(COPANT)和太平洋地區標准會議(PASC)的成員。
ANSI成立於1918年,原名是美國工程標准委員會(American Engineering Standards Committee;AESC),1928年改名為美國標准協會(American Standards Association; ASA),1966年改名為美國標准學會(America Standards Institute;USASI),1969年正式改為現名美國國家標准學會(American National Standards Institute, ANSI)。
美國國家標准學會是非贏利性質的民間標准化組織,是美國國家標准化活動的中心,許多美國標准化學協會的標准制修訂都同它進行聯合,ANSI批准標准成為美國國家標准,但它本身不制定標准,標準是由相應的標准化團體和技術團體及行業協會和自願將標准送交給ANSI批準的組織來制定,同時ANSI起到了聯邦政府和民間的標准系統之間的協調作用,指導全國標准化活動,ANSI 遵循自願公、公開性、透明性、協商一致性的原則,採用3種方式制定、審批ANSI標准。
關於ansi編碼:
unicode和ansi都是字元代碼的一種表示形式。
為使計算機支持更多語言,通常使用 0x80~0xFF 范圍的 2 個位元組來表示 1 個字元。比如:漢字 '中' 在中文操作系統中,使用 [0xD6,0xD0] 這兩個位元組存儲。
不同的國家和地區制定了不同的標准,由此產生了 GB2312, BIG5, JIS 等各自的編碼標准。這些使用 2 個位元組來代表一個字元的各種漢字延伸編碼方式,稱為 ANSI 編碼。在簡體中文系統下,ANSI 編碼代表 GB2312 編碼,在日文操作系統下,ANSI 編碼代表 JIS 編碼。
不同 ANSI 編碼之間互不兼容,當信息在國際間交流時,無法將屬於兩種語言的文字,存儲在同一段 ANSI 編碼的文本中。
ANSI英文全稱: American National Standards Institute.中文名稱:美國國家標准協會。
ANSI成立於1918年,原名是美國工程標准委員會(American Engineering Standards Committee;AESC),1928年改名為美國標准協會(American Standards Association; ASA),1966年改名為美國標准學會(America Standards Institute;USASI),1969年正式改為現名美國國家標准學會(American National Standards Institute, ANSI)。
美國國家標准學會是非贏利性質的民間標准化組織,是美國國家標准化活動的中心,許多美國標准化學協會的標准制修訂都同它進行聯合,ANSI批准標准成為美國國家標准,但它本身不制定標准,標準是由相應的標准化團體和技術團體及行業協會和自願將標准送交給ANSI批準的組織來制定,同時ANSI起到了聯邦政府和民間的標准系統之間的協調作用,指導全國標准化活動,ANSI 遵循自願公、公開性、透明性、協商一致性的原則,採用3種方式制定、審批ANSI標准。
ANSI是國際標准化委員會(ISO)和國際電工委員會(IEC)5個常任理事成員之一,4個理事局成員之一,參加79%的ISO/TC的活動,參加89%的IEC/TC活動。ANSI 是泛美技術標准委員會(COPANT)和太平洋地區標准會議(PASC)的成員。
③ 編譯安裝apache 需要什麼環境
編譯Apache的要求如下:
磁碟空間
必須保證有50MB以上的自由臨時磁碟空間。Apache安裝完畢後會占據10MB左右的空間,實際的磁碟空間需求會因編譯設置和是否安裝第三方模塊而有所不同。
ANSI-C編譯器及編譯環境
必須裝有ANSI-C編譯器,推薦使用自由軟體基金會(FSF)的GCC。如果沒有GCC,那麼要確保使用的編譯器符合ANSI標准,而且PATH中必須包含指向基本編譯工具比如make的路徑。
確保准確的時間
由於HTTP協議的元素都會用到時間,有必要了解一下你的系統所使用的時間同步機制。在基於網路時間協議(NTP)的系統中,一般是用ntpdate或xntpd來同步時間。有關NTP軟體的資料請參見NTP主頁。
Perl 5 [可選]
有些用Perl寫的支持腳本,如apxs或dbmmanage ,需要Perl5解釋器(5.003或以上的版本就足夠了)。如果系統中存在多個Perl解釋器,比如有系統提供的Perl 4,還有你自己安裝的Perl 5,推薦你使用 --with-perl 選項來確保configure腳本使用正確的版本。如果configure沒有沒找到Perl 5也沒關系,這並不影響Apache httpd的編譯和安裝,只是相關的支持腳本不能使用而已。
apr/apr-util >= 1.2
apr和apr-util包含在Apache httpd的發行源代碼中,並且在絕大多數情況下使用都不會出現問題。當然,如果apr或apr-util的1.0或1.1版本已經安裝在你的系統中了,則必須將你的apr/apr-util升級到1.2版本,或者將httpd單獨分開編譯。要使用發行源代碼中自帶的apr/apr-util源代碼進行安裝,你必須手動完成:
# 編譯和安裝 apr 1.2
cd srclib/apr
./configure --prefix=/usr/local/apr-httpd/
make
make install
# 編譯和安裝 apr-util 1.2
cd ../apr-util
./configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/
make
make install
# 配置 httpd
cd ../../
./configure --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/
④ 純粹的ansi編譯器是什麼意思
ANSI:美國國家標准學會標准;指螺絲執行ANSI美國國家標准學會標准。高級加密標准(AES) 是美國標准與技術研究院針對電子數據的加密所制定的規范。僅供參考。
⑤ Linux操作系統中默認安裝的C語言編譯系統是
Linux操作系統中默認安裝的C語言編譯系統是GCC(GNU Compiler Collection),是Linux下最常用的C語言編譯器,是GNU項目中符合ANSI,C標準的編譯系統,能夠編譯用C、Object C等語言編寫的程序。
同時它可以通過不同的前端模塊來支持各種語言,如Java、Fortran、Pascal、Mola,3和Ada等。
C語言的標准
1.1 K,RC
1973年,Dennis M Ritchie設計和實現了C語言,從那以後使用者逐漸增加。
1978年,Kernighan 和 Ritchie 合著了《The C Programming Language》,這本書定義的C語言被稱為 K,RC 。
1.2 標准 C
隨著C語言使用日益廣泛,出現了許多新問題,人們迫切希望對C語言進行標准化。
第一個標准:C89
1983年,ANSI成立了一個委員會X3J11,對C語言進行標准化。
1989年,ANSI 批准了第一個C語言標准 X3,159-1989,並於1990年公布,被稱為 ANSIC、C89 或 C90。
1990年,這個標准又被批准為ISO標准:ISO,IEC 9899:1990 。
ANSIC標准被ISO採納,並且ISO發布的修訂版也被ANSI採納,因此ANSI標准和ISO標准實際上沒有技術區別。這些名稱的含義是相同的:ANSI C、ISO C、標准C。
1994年和1996年,ISO發布了兩個技術更正,更正了1990ISOC標准中的錯誤。
第二個標准:C94
1995年,ISO發布了1990ISOC標準的一個補充,稱為AMD1。擴充後的標准被稱為C94或C95。
第三個標准:C99
1999年,ISO發布了一個新版本的ISOC標准:ISO,IEC9899:1999,稱為C99。
2001年、2004年和2007年,ISO發布了三個技術更正,更正了1999ISOC標准中的錯誤。
第四個標准:C11
2011年,ISO發布了一個新版本的ISOC標准:ISO,IEC9899:2011,稱為C11。C11 是 C語言的最新標准。
1.3 GNUC
1984年,Richard Stallman 發起了GNU計劃,它的目標是開發一個完整且自由的Unix-like操作系統(GNU系統)。
GNU系統是一個完整的操作系統,包括操作系統內核和各種工具軟體。各種GNU系統的變種(例如Redhat、Ubuntu等)已經被廣泛使用,它們使用的操作系統內核都是Linux。雖然這些系統經常被稱為Linux,但准確地說,它們是GNU/Linux系統。
GNU在編寫Linux時擴展了標准C,稱為GNUC。
GNU C的擴展詳見:Extensions to the C Language Family
GNU C也稱為Linux C,一般用於Linux上的開發,而標准C可以跨平台。
GNU C使用的編譯器是GCC。
⑥ ANSI C標準的主要編譯器的支持
ANSI C現在被幾乎所有廣泛使用的編譯器支持。現在多數C代碼是在ANSI C基礎上寫的。任何僅僅使用標准C並且沒有任何硬體依賴假設的代碼實際上能保證在任何平台上用遵循C標準的編譯器編譯成功。如果沒有這種預防措施,多數程序只能在一種特定的平台或特定的編譯器上編譯,例如,使用非標准庫,例如圖形用戶界面庫,或者有關編譯器或平台特定的特性例如數據類型的確切大小和位元組序.
[編輯]選擇編譯 為了減輕K&R C和ANSI C標准,__STDC__(standard c)宏可以被用來將代碼分割為ANSI和K&R部分。
#if __STDC__
externint getopt(int,char*const*,constchar*);
#else
externint getopt();
#endif
上面最好使用#if __STDC__而不是#ifdef __STDC__,因為一些實現可能會把 __STDC__設置為0來表示不遵循ANSI C。__STDC__能處理任何沒有被宏替換或者值為0的標示符。因而即使宏__STDC__沒有定義來表示不遵循ANSI C,__STDC__仍然能像顯示的那樣工作。
在上面的例子,一個原型中使用了ANSI實現兼容的函數聲明,而另一個使用了過時的非原形聲明。它們在C99和C90中依舊是ANSI兼容的,但並不被鼓勵使用。