編譯使用c11
❶ c11是什麼意思
C11標準是 ISO/IEC 9899:2011 - Information technology -- Programming languages -- C 的簡稱,曾用名為C1X。
C11標準是c語言標準的第三版,前一個標准版本是C99標准。2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC) 旗下的C語言標准委員會(ISO/IEC JTC1/SC22/WG14)正式發布了C11標准。
名詞解釋:
C11標準的最終定稿的草案是免費開放的,為N1570 [3] ,但是正式標准文件需要198瑞士法郎。
當前,支持此標準的主流C語言編譯器有:GCC、Clang、Intel C++ Compiler等。
對IEEE754標准-2008的半精度浮點數的支持。盡管遵循GNU C標准規范的編譯器(GCC以及Clang等)使用了C擴展關鍵字__fp16,但是只能對半精度浮點數進行引用,而不能做任何算術操作。因此,這個特性應當在下一個C語言標准中立馬加入進去的,建議使用_Half作為半精度浮點數類型的關鍵字。
❷ 為什麼linux下C11沒法使用memcpy_s
簡單的說,那就是沒有唄;memcpy_s這個本身就是windows的庫,而不是標准庫,更不是你所說的C11的庫;這個應該是windows所謂的更安全的庫;
❸ 如何配置C11標準的編譯器
gcc默認是不支持c99及以上版本的 如果想支持,需要在編譯時加參數:-std=c99 gcc -std=c99 -o xx xx.c 或者在源碼里定義宏 #define __STDC_VERSION__ 199901L
❹ 如何讓 MinGW 編譯器支持 C++ 11
請到關。 網下載mingw最新版本,安裝的時候選擇GCC-4.8.1(G++4.8.1)。
編譯時添加編譯選項: -std=c++11
mingw的GCC有一點問題,如果要使用完整C++特性,建議使用cygwin
如果要結合使用第三方IDE必須確保IDE調用編譯器時自動添加上述編譯選項。
❺ linux內核遷移到c11
內核開發者ArndBergmann發出了一個新的補丁,允許Linux內核在指定C11的GNU方言時默認使用「-std=gnu11」。
事件的前因後果為,Linux內核社區日前曾討論了是否要為內核採用現代C語言標准。Linus在討論中提出了從C89提升到C99的想法;並表示,內核代碼一直停留在C89的原因之一是編譯器gcc的舊版本會出現奇怪的問題,導致初始化程序被破壞。但現在內核要求的GCC最低版本已經提高到了v5.1,那些bug可能已經不再相關。
最後事實證明,以當前內核的最低版本編譯器要求和當前代碼的條件,他們實際上可以開始使用C11構建內核。ArndBergmann提議直接升級到C11甚至C2x。雖然他不確定C11是否會帶來任何對內核有用的新內容,但如果升級到C17或C2x,會破壞對gcc-5/6/7的支持;因此升級到C11更容易實現,而且跨越太大內核社區未必接受。
Linus對該想法表示了贊成。在Bergmann確認此舉可行後,Linus宣布將在下一個內核版本v5.18中嘗試使用C11標准。
❻ 請教關於gcc編譯文件時遇到C11支持的問題
由於系統比較復雜,首先用VC++.NET 2005 開發,在PC測試全部通過後,使用GCC編譯時出現了兩個警告,調試時出現一個錯誤.請高手指教:
1.編譯器警告
Queue.h:20: warning: ignoring packed attribute on unpacked non-POD field `CommandPackage Queue::cmd[1]
請教原因
2.編譯器警告
buffer.h:12: warning: alignment of 'Buffer::_ZTV6Buffer' is greater than maximum object file alignment. Using 1
3.調試器報錯
AVR Simulator: Excessive stack overflow, stop sim
簡單說明下程序的情況:
程序用了面向對象的設計,總共涉及了大約10+個類.其中報錯了的是指令緩沖相關類.
Buffer繼承出了E2PBuffer和CommBuffer,在類內部使用了一個CommandPackage(non-POD)類型組成的Queue類.其中Buffer及其兩個子類還有Queue均報了以上兩個警告.
我CommandPackage的大小是 10 Byte,緩沖隊列最大數量是5,緩沖隊列一共產生了6個實例.
由於編譯器不支持new和delete,所有對象在全局實例化.並通過函數初始化函數將引用傳進類
❼ 請問什麼C語言編譯器才能支持帶有C11標准,支持後綴_s的可選安全函數
帶有_s的函數只是微軟在VS中給出的吧,並不是標准庫中的內容,如果要使用這些函數,只能用微軟的編譯器了。
❽ centos7 gcc編譯器對c11標準的支持
gcc-std=c11main.c-omain
前提是你的gcc版本得夠新, 支持 c11才可以.
❾ c語言到底需不需要按照它的最新標准來為什麼有的有的編譯器對c11標准不是很在乎,
根據你的使用的編譯器和你的實際需要來。
是否使用新標准,就像是現在是使用win7還是win10的選擇一樣,喜歡用哪個就哪個。
新的標准只是增加了新的特性,並沒有對老的內容有修改,是向下兼容的。
❿ 請教關於gcc編譯文件時遇到C11支持的問題
有可能是(默認的)路徑不對,在遇到這個問題時,你可以在彈出來的對話框中自己手動去設置你希望的exe文件,問題就解決了