奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語言

嵌入式C語言優化技巧

時間:2024-10-27 21:01:53 松濤 C語言 我要投稿
  • 相關推薦

嵌入式C語言優化技巧

  嵌入式系統是指完成一種或幾種特定功能的計算機系統,具有自動化程度高,響應速度快等優點,目前已廣泛應用于消費電子,工業控制等領域。嵌入式系統受其使用的硬件以及運行環境的限制,非常注重代碼的時間和空間效率,因此選擇一種合適的開發語言十分重要。下面是嵌入式C語言優化技巧相關的知識,歡迎閱讀。

  目前,在嵌入式系統開發中可使用的語言很多,其中 C語言應用得最廣泛。雖然用 C 語言編程具有許多優點,但基于嵌入式系統的C語言和標準 C語言又有很大區別。接下來小編結合嵌入式系統的特點和高手們的一些積累,給大家整理出在程序設計中代碼優化的一些小技巧。

  1、嵌入式C語言的特點

  作為一種結構化程序設計語言,C 語言兼顧多種高級語言的特點,具有很強的功能性和可移植性。但在嵌入式系統開發中,出于對低價產品的需求,系統的計算能力和存儲容量都非常有限,因此如何利用好這些資源就顯得十分重要。開發人員應注意嵌入式 C語言和標準 C 語言的區別,減少生成代碼長度,提高程序執行效率,在程序設計中對代碼進行優化。

  2、C代碼在程序中的優化

  現在的 C 編譯器會自動對代碼進行優化,但這些優化是對執行速度和代碼長度的平衡。如果要獲得更小且執行效率更高的代碼,需要程序員手工對代碼進行優化。

  3、變量類型的定義

  不同的數據類型所生成的機器代碼長度相差很多,變量類型選取的范圍越小運行速度越快,占用的內存越少。能夠使用字符型(char)定義的變量,就不要使用整型(int)變量來定義;能夠使用整型變量定義的變量就不要用長整型(long int),能不使用浮點型(float)變量就不要使用浮點型變量。相同類型的數據類型,有無符號對機器代碼長度也有影響。因此我們應按照實際需要合理的選用數據類型。當然,在定義變量后不要超過變量的作用范圍,如果超過變量的范圍賦值,C編譯器并不報錯,但程序運行結果卻錯了,而且這樣的錯誤很難發現。

  4、算法優化

  算法優化指對程序時空復雜度的優化:在 PC 機上進行程序設計時一般不必過多關注程序代碼的長短,只需考慮功能的實現,但嵌入式系統就必須考慮系統的硬件資源,在程序設計時,應盡量采用生成代碼短的算法,在不影響程序功能實現的情況下優化算法。

  5、適當的使用宏

  在C程序中使用宏代碼可以提高程序的執行效率。宏代碼本身不是函數,但使用起來像函數。函數調用要使用系統的棧來保存數據,同時 CPU 在函數調用時需要保存和恢復當前的現場,進行進棧和出棧操作,所以函數調用也需要 CPU時間。而宏定義就沒有這個問題:宏定義僅僅作為預先寫好的代碼嵌入到當前程序中,不產生函數調用,所占用的僅僅是一些空間,省去了參數壓棧,生成匯編語言的 call 調用,返回參數,執行 return等過程,從而提高了程序的執行速度。雖然宏破壞了程序的可讀性,使排錯更加麻煩,但對于嵌入式系統,為了達到要求的性能,嵌入代碼常常是必須的做法。

  此外,我們還要避免不必要的函數調用,請看下面的代碼:

  [plain] view plain copy print?

  void str_print( char *str )

  {

  int i;

  for ( i = 0; i < strlen ( str ); i++ )

  {

  printf("%c",str[ i ] );

  }

  }

  void str_print1 ( char *str )

  {

  int len;

  len = strlen ( str );

  for ( i = 0; i < len; i++ )

  {

  printf("%c",str[ i ] );

  }

  }

  請注意,這兩個函數的功能相似。然而,第一個函數調用strlen函數多次,而第二個函數只調用函數strlen一次。因此第二個函數性能明顯比第一個好。

  6、內嵌匯編

  程序中對時間要求苛刻的部分可以用內嵌匯編來重寫,以帶來速度上的顯著提高。但是,開發和測試匯編代碼是一件辛苦的工作,它將花費更長的時間,因而要慎重選擇要用匯編的部分。在程序中,存在一個80-20原則,即20%的程序消耗了80%的運行時間,因而我們要改進效率,最主要是考慮改進那20%的代碼。

  7、提高循環語言的效率

  在 C 語言中循環語句使用頻繁,提高循環體效率的基本辦法就是降低循環體的復雜性:

  (1) 在多重循環中,應將最長的循環放在最內層,最短的循環放在最外層。這樣可以減少 CPU跨切循環的次數。如例 1-1 的效率比 1-2 的效率要低:

  [plain] view plain copy print?

  for (j = 0; j < 30; j++)

  {

  for (i = 0; i < 10; i++)

  {……}

  } // 例子 1-1

  for (i = 0; i < 10; i++)

  {

  for (j = 0; j < 30; j++)

  {……}

  } // 例子 2-2 程序部簡潔但效率高

  8、提高 switch 語句的效率

  switch 語句是 C 語言中常用的選擇語句, 在編譯時會產生if- else- if 嵌套代碼,并按照順序進行比較,發現匹配時,就跳轉到滿足條件的語句執行。

  當 switch 語句中的 case 標號很多時,為了減少比較的次數,可以把發生頻率相對高的條件放到第一位或者把整個 switch 語句轉化嵌套 switch 語句。把發生頻率高的 case 標號放在最外層的 switch 語句中,發生相對頻率相對低的 case 標號放在另外的 switch 語句中。如例 3 中,把發生率高的case 標號放在外層的 switch 語句中,把發生頻率低的放在缺省的(default)內層 switch 語句中。

  [plain] view plain copy print?

  switch (表達式)

  {

  case 值1:

  語句1: break;

  case 值2:

  語句2:break;

  ……

  /*把發生頻率低的放在內層的switch語句中*/

  default:

  switch (表達式)

  {

  case 值n:

  語句n: break;

  case 值m:

  語句m: break;

  ……

  }

  }

  例子3 使用嵌套switch語句提高程序執行效率。

  9、避免使用標準庫

  使用 C語言標準庫可以加快開發進度,但由于標準庫需要設法處理用戶所有可能遇到的情況,所以很多標準庫代碼很大。比如標準庫中的 sprintf函數非常大。這個龐大的代碼中有很大一部分用于處理浮點數,如果程序中不需要格式化浮點數值( 如%f),程序設計人員就可以根據實際情況用少量的代碼實現這個功能。

  10、采用數學方法優化程序

  數學是計算機之母,沒有數學的依據和基礎,就沒有計算機的發展,所以在編寫程序的時候,采用一些數學方法會對程序的執行效率有數量級的提高。有時候這個問題常常被大家忽略, 對于沒有經驗的程序員來說更是如此。例如:求 1~100 的和:

  sum = 100*(100+1)/2;

  數學公式: (a1 + an)*n/2

  使用C語言的位操作可以減少除法和取模的運算。在計算機程序中數據的位是可以操作的最小數據單位,理論上可以用“位運算”來完成所有的運算和操作。因而,靈活的位操作可以有效地提高程序運行的效率。比如用用位操作區代替除法:比如:128 / 8 ->> 128 >> 3;

  優化算法和數據結構對提高代碼的效率有很大的幫助。當然有時候時間效率和空間效率是對立的,此時應分析哪個更重要, 做出適當的折中。另外,在進行優化的時候不要片面的追求緊湊的代碼,因為緊湊的代碼并不能產生高效率的機器碼。

  11、存儲器分配

  由于成本限制,嵌入式系統存儲器容量有限。程序中所有的變量,包含的庫函數以及堆棧等都使用有限的內存:全局變量在整個程序范圍內都有效。程序執行完后才會釋放;靜態變量的作用范圍也是整個程序,只有局部變量中的動態變量在函數執行完后會釋放。因此, 在程序中應盡量使用局部變量,提高內存使用效率。程序中堆的大小受限于所有全局數據和棧空間都分配后的剩余量,如果堆太小,程序不能夠在需要的時候分配內存。因此在使用 malloc 函數申請內存之后一定要用 free 函數進行釋放, 防止內存泄露。

  12、選擇好的無限循環

  在編程中,我們常常需要用到無限循環,常用的兩種方法是while (1) 和 for (;;)。這兩種方法效果完全一樣,但那一種更好呢?然我們看看它們編譯后的代碼:

  編譯前:

  while (1);

  編譯后:

  mov eax,1

  test eax,eax

  je foo+23h

  jmp foo+18h

  編譯前:

  for (;;);

  編譯后:

  jmp foo+23h

  顯然,for (;;)指令少,不占用寄存器,而且沒有判斷,跳轉,比while (1)好。

  13、使用Memoization,以避免遞歸重復計算

  考慮Fibonacci(斐波那契)問題,Fibonacci問題是可以通過簡單的遞歸方法來解決:

  [plain] view plain copy print?

  1. int fib ( n )

  2. {

  3. if ( n == 0 || n == 1 )

  4. {

  5. return 1;

  6. }

  7. else

  8. {

  9. return fib( n - 2 ) + fib ( n - 1 );

  10. }

  11. }

  注:在這里,我們考慮Fibonacci 系列從1開始,因此,該系列看起來:1,1,2,3,5,8,…

  注意:從遞歸樹,我們計算fib(3)函數2次,fib(2)函數3次。這是相同函數的重復計算。如果n非常大,fib函數的效率會比較低。Memoization是一個簡單的技術,可以被用在遞歸,加強計算速度。fibonacci 函數Memoization的代碼如下:

  [plain] view plain copy print?

  1. int calc_fib ( int n )

  2. {

  3. int val[ n ] , i;

  4. for ( i = 0; i <=n; i++ )

  5. {

  6. val[ i ] = -1; // Value of the first n + 1 terms of the fibonacci terms set to -1

  7. }

  8. val[ 0 ] = 1; // Value of fib ( 0 ) is set to 1

  9. val[ 1 ] = 1; // Value of fib ( 1 ) is set to 1

  10. return fib( n , val );

  11. }

  12.

  13. int fib( int n , int* value )

  14. {

  15. if ( value[ n ] != -1 )

  16. {

  17. return value[ n ]; // Using memoization

  18. }

  19. else

  20. {

  21. value[ n ] = fib( n - 2 , value ) + fib ( n - 1 , value ); // Computing the fibonacci term

  22. }

  23. return value[ n ]; // Returning the value

  24. }

  除了編程上的技巧外,為提高系統的運行效率,我們通常也需要最大可能地利用各種硬件設備自身的特點來減小其運轉開銷,例如減小中斷次數,利用DMA傳輸方式等。

  嵌入式C語言簡介

  簡單地說,嵌入式系統集系統的應用軟件與硬件于一體,類似于 PC 中 BIOS 的工作方式,具有軟件代碼小、高度自動化、響應速度快等特點,特別適合于要求實時和多任務的體系。嵌入式系統主要由嵌入式處理器、相關支撐硬件、嵌入式操作系統及應用軟件系統等組成,它是可獨立工作的“器件”。

  嵌入式系統幾乎包括了生活中的所有電器設備,如掌上 PDA 、移動計算設備、電視機頂盒、手機上網、數字電視、多媒體、汽車、微波爐、數字相機、家庭自動化系統、電梯、空調、安全系統、自動售貨機、蜂窩式電話、消費電子設備、工業自動化儀表與醫療儀器等。

  嵌入式系統的硬件部分,包括處理器 / 微處理器、存儲器及外設器件和 I/O 端口、圖形控制器等。嵌入式系統有別于一般的計算機處理系統,它不具備像硬盤那樣大容量的存儲介質,而大多使用 EPROM 、 EEPROM 或閃存 (Flash Memory) 作為存儲介質。軟件部分包括操作系統軟件 ( 要求實時和多任務操作 ) 和應用程序編程。應用程序控制著系統的運作和行為;而操作系統控制著應用程序編程與硬件的交互作用。 據不完全統計,目前全世界嵌入式處理器的品種總量已經超過 1000 種,流行的體系結構有 30 多個系列。其中 8051 體系占多半,生產這種單片機的半導體廠家有 20 多個,共 350 多種衍生產品,僅 Philips 就有近 100 種。現在幾乎每個半導體制造商都生產嵌入式處理器,越來越多的公司有自己的處理器設計部門。嵌入式處理器的尋址空間一般從 64kB 到 16MB ,處理速度為 0.1~2000MIPS ,常用封裝 8~144 個引腳。

  根據現狀,嵌入式計算機可分成下面幾類。

  (1) 嵌入式微處理器 (Embedded Microprocessor Unit, EMPU)

  嵌入式微處理器采用“增強型”通用微處理器。由于嵌入式系統通常應用于環境比較惡劣的環境中,因而嵌入式微處理器在工作溫度、電磁兼容性以及可靠性方面的要求較通用的標準微處理器高。但是,嵌入式微處理器在功能方面與標準的微處理器基本上是一樣的。根據實際嵌入式應用要求,將嵌入式微處理器裝配在專門設計的主板上,只保留和嵌入式應用有關的主板功能,這樣可以大幅度減小系統的體積和功耗。和工業控制計算機相比,嵌入式微處理器組成的系統具有體積小、重量輕、成本低、可靠性高的優點,但在其電路板上必須包括 ROM 、 RAM 、總線接口、各種外設等器件,從而降低了系統的可靠性,技術保密性也較差。由嵌入式微處理器及其存儲器、總線、外設等安裝在一塊電路主板上構成一個通常所說的單板機系統。嵌入式處理器目前主要有 Am186/88 、 386EX 、 SC-400 、 Power PC 、 68000 、 MIPS 、 ARM 系列等。

  (2) 嵌入式微控制器 (Microcontroller Unit, MCU) (3) 嵌入式 DSP 處理器 (Embedded Digital Signal Processor, EDSP (4) 嵌入式片上系統 (System On Chip, SOC)

  隨著 EDI 的推廣和 VLSI 設計的普及化,以及半導體工藝的迅速發展,可以在一塊硅片上實現一個更為復雜的系統,這就產生了 SOC 技術。各種通用處理器內核將作為 SOC 設計公司的標準庫,和其他許多嵌入式系統外設一樣,成為 VLSI 設計中一種標準的器件,用標準的 VHDL 、 Verlog 等硬件語言描述,存儲在器件庫中。用戶只需定義出其整個應用系統,仿真通過后就可以將設計圖交給半導體工廠制作樣品。這樣除某些無法集成的器件以外,整個嵌入式系統大部分均可集成到一塊或幾塊芯片中去,應用系統電路板將變得很簡單,對于減小整個應用系統體積和功耗、提高可靠性非常有利。 SOC 可分為通用和專用兩類,通用 SOC 如 Infineon(Siemens) 的 TriCore 、 Motorola 的 M-Core ,以及某些 ARM 系列器件,如 Echelon 和 Motorola 聯合研制的 Neuron 芯片等;專用 SOC 一般專用于某個或某類系統中,如 Philips 的 Smart XA ,它將 XA 單片機內核和支持超過 2048 位復雜 RSA 算法的 CCU 單元制作在一塊硅片上,形成一個可加載 Java 或 C 語言的專用 SOC ,可用于互聯網安全方面。

  嵌入式操作系統是一種支持嵌入式系統應用的操作系統軟件,它是嵌入式系統 ( 包括硬、軟件系統 ) 極為重要的組成部分,通常包括與硬件相關的底層驅動軟件、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器等 Browser 。嵌入式操作系統具有通用操作系統的基本特點,如能夠有效管理越來越復雜的系統資源;能夠把硬件虛擬化,使得開發人員從繁忙的驅動程序移植和維護中解脫出來;能夠提供庫函數、驅動程序、工具集以及應用程序 。與通用操作系統相比較,嵌入式操作系統在系統實時高效性、硬件的相關依賴性、軟件固態化以及應用的專用性等方面具有較為突出的特點。

  1. 嵌入式操作系統的種類

  一般情況下,嵌入式操作系統可以分為兩類,一類是面向控制、通信等領域的實時操作系統,如 WindRiver 公司的 VxWorks 、 ISI 的 pSOS 、 QNX 系統軟件公司的 QNX 、 ATI 的 Nucleus 等;另一類是面向消費電子產品的非實時操作系統,這類產品包括個人數字助理 (PDA) 、移動電話、機頂盒、電子書、 WebPhone 等。

  a. 非實時操作系統

  早期的嵌入式系統中沒有操作系統的概念,程序員編寫嵌入式程序通常直接面對裸機及裸設備。在這種情況下,通常把嵌入式程序分成兩部分,即前臺程序和后臺程序。前臺程序通過中段來處理事件,其結構一般為無限循環;后臺程序則掌管整個嵌入式系統軟、硬件資源的分配、管理以及任務的調度,是一個系統管理調度程序。這就是通常所說的前后臺系統。一般情況下,后臺程序也叫任務級程序,前臺程序也叫事件處理級程序。在程序運行時,后臺程序檢查每個任務是否具備運行條件,通過一定的調度算法來完成相應的操作。對于實時性要求特別嚴格的操作通常由中斷來完成,僅在中斷服務程序中標記事件的發生,不再做任何工作就退出中斷,經過后臺程序的調度,轉由前臺程序完成事件的處理,這樣就不會造成在中斷服務程序中處理費時的事件而影響后續和其他中斷。

  實際上,前后臺系統的實時性比預計的要差。這是因為前后臺系統認為所有的任務具有相同的優先級別,即是平等的,而且任務的執行又是通過 FIFO 隊列排隊,因而對那些實時性要求高的任務不可能立刻得到處理。另外,由于前臺程序是一個無限循環的結構,一旦在這個循環體中正在處理的任務崩潰,使得整個任務隊列中的其他任務得不到機會被處理,從而造成整個系統的崩潰。由于這類系統結構簡單,幾乎不需要 RAM/ROM 的額外開銷,因而在簡單的嵌入式應用被廣泛使用。

  b. 實時操作系統

  實時系統是指能在確定的時間內執行其功能并對外部的異步事件做出響應的計算機系統。其操作的正確性不僅依賴于邏輯設計的正確程度,而且與這些操作進行的時間有關。“在確定的時間內”是該定義的核心。也就是說,實時系統是對響應時間有嚴格要求的。

  實時系統對邏輯和時序的要求非常嚴格,如果邏輯和時序出現偏差將會引起嚴重后果。實時系統有兩種類型:軟實時系統和硬實時系統。軟實時系統僅要求事件響應是實時的,并不要求限定某一任務必須在多長時間內完成;而在硬實時系統中,不僅要求任務響應要實時,而且要求在規定的時間內完成事件的處理。通常,大多數實時系統是兩者的結合。實時應用軟件的設計一般比非實時應用軟件的設計困難。實時系統的技術關鍵是如何保證系統的實時性。

  實時多任務操作系統是指具有實時性、能支持實時控制系統工作的操作系統。其首要任務是調度一切可利用的資源完成實時控制任務,其次才著眼于提高計算機系統的使用效率,重要特點是要滿足對時間的限制和要求。實時操作系統具有如下功能:任務管理 ( 多任務和基于優先級的任務調度 ) 、任務間同步和通信 ( 信號量和郵箱等 ) 、存儲器優化管理 ( 含 ROM 的管理 ) 、實時時鐘服務、中斷管理服務。實時操作系統具有如下特點:規模小,中斷被屏蔽的時間很短,中斷處理時間短,任務切換很快。

  實時操作系統可分為可搶占型和不可搶占型兩類。對于基于優先級的系統而言,可搶占型實時操作系統是指內核可以搶占正在運行任務的 CPU 使用權并將使用權交給進入就緒態的優先級更高的任務,是內核搶了 CPU 讓別的任務運行。不可搶占型實時操作系統使用某種算法并決定讓某個任務運行后,就把 CPU 的控制權完全交給了該任務,直到它主動將 CPU 控制權還回來。中斷由中斷服務程序來處理,可以激活一個休眠態的任務,使之進入就緒態;而這個進入就緒態的任務還不能運行,一直要等到當前運行的任務主動交出 CPU 的控制權。使用這種實時操作系統的實時性比不使用實時操作系統的系統性能好,其實時性取決于最長任務的執行時間。不可搶占型實時操作系統的缺點也恰恰是這一點,如果最長任務的執行時間不能確定,系統的實時性就不能確定。

  可搶占型實時操作系統的實時性好,優先級高的任務只要具備了運行的條件,或者說進入了就緒態,就可以立即運行。也就是說,除了優先級最高的任務,其他任務在運行過程中都可能隨時被比它優先級高的任務中斷,讓后者運行。通過這種方式的任務調度保證了系統的實時性,但是,如果任務之間搶占 CPU 控制權處理不好,會產生系統崩潰、死機等嚴重后果。

  2. 嵌入式操作系統的發展

  嵌入式操作系統伴隨著嵌入式系統的發展經歷了 4 個比較明顯的階段。

  第一階段是無操作系統的嵌入算法階段,是以單芯片為核心的可編程控制器形式的系統,同時具有與監測、伺服、指示設備相配合的功能。這種系統大部分應用于一些專業性極強的工業控制系統中,一般沒有操作系統的支持,通過匯編語言編程對系統進行直接控制,運行結束后清除內存。這一階段系統的主要特點是:系統結構和功能都相對單一,處理效率較低,存儲容量較小,幾乎沒有用戶接口。由于這種嵌入式系統使用簡便、價格很低,以前在國內工業領域應用較為普遍,但是已經遠遠不能適應高效的、需要大容量存儲介質的現代化工業控制和新興的信息家電等領域的需求。

  第二階段是以嵌入式 CPU 為基礎、以簡單操作系統為核心的嵌入式系統。這一階段系統的主要特點是: CPU 種類繁多,通用性比較差;系統開銷小, 效率高;一般配備系統仿真器,操作系統具有一定的兼容性和擴展性;應用軟件較專業,用戶界面不夠友好;系統主要用來控制系統負載以及監控應用程序運行。

  第三階段是通用的嵌入式實時操作系統階段,是以嵌入式操作系統為核心的嵌入式系統。這一階段系統的主要特點是:嵌入式操作系統能運行于各種不同類型的微處理器上,兼容性好;操作系統內核精小、效率高,并且具有高度的模塊化和擴展性;具備文件和目錄管理、設備支持、多任務、網絡支持、圖形窗口以及用戶界面等功能;具有大量的應用程序接口 (API) ,開發應用程序簡單;嵌入式應用軟件豐富。

  第四階段是以基于 Internet 為標志的嵌入式系統,這是一個正在迅速發展的階段。目前大多數嵌入式系統還孤立于 Internet 之外,但隨著 Internet 的發展以及 Internet 技術與信息家電、工業控制技術等結合日益密切,嵌入式設備與 Internet 的結合將代表著嵌入式技術的真正未來。

  3. 使用實時操作系統的必要性

  嵌入式實時操作系統在目前的嵌入式應用中用得越來越廣泛,尤其在功能復雜、系統龐大的應用中顯得愈來愈重要。

  首先,嵌入式實時操作系統提高了系統的可靠性。在控制系統中,出于安全方面的考慮,要求系統起碼不能崩潰,而且還要有自愈能力。不僅要求在硬件設計方面提高系統的可靠性和抗干擾性,而且也應在軟件設計方面提高系統的抗干擾性,盡可能地減少安全漏洞和不可靠的隱患。長期以來的前后臺系統軟件設計在遇到強干擾時,使得運行的程序產生異常、出錯、跑飛,甚至死循環,造成了系統的崩潰。而實時操作系統管理的系統,這種干擾可能只是引起若干進程中的一個被破壞,可以通過系統運行的系統監控進程對其進行修復。通常情況下,這個系統監視進程用來監視各進程運行狀況,遇到異常情況時采取一些利于系統穩定可靠的措施,如把有問題的任務清除掉。從某種意義上說,沒有操作系統的計算機 ( 裸機 ) 是沒有用的。在嵌入式應用中,只有把 CPU 嵌入到系統中,同時又把操作系統嵌入進去,才是真正的計算機嵌入式應用。

  4. 實時操作系統的優缺點

  在嵌入式實時操作系統環境下開發實時應用程序使程序的設計和擴展變得容易,不需要大的改動就可以增加新的功能。通過將應用程序分割成若干獨立的任務模塊,使應用程序的設計過程大為簡化;而且對實時性要求苛刻的事件都得到了快速、可靠的處理。通過有效的系統服務,嵌入式實時操作系統使得系統資源得到更好的利用。

【嵌入式C語言優化技巧】相關文章:

嵌入式C語言性能優化方法10-22

c語言空間換時間優化代碼的技巧方法06-19

嵌入式C語言學習秘訣08-25

嵌入式C語言編程小知識12-20

C語言左右法則的技巧10-03

如何優化C語言(單片機)06-01

C語言高效編程的4個小技巧10-27

C語言頭文件避免重復包含的方法技巧08-28

C語言的結構10-14

C語言考點精選06-29

主站蜘蛛池模板: 玉环县| 工布江达县| 吉安市| 綦江县| 乌兰察布市| 昌平区| 中江县| 壶关县| 定陶县| 洛川县| 沁源县| 迁西县| 龙游县| 湖口县| 湖北省| 琼中| 营口市| 集贤县| 北宁市| 和平区| 竹北市| 三原县| 赫章县| 陆川县| 龙山县| 安乡县| 伊川县| 嘉定区| 呼和浩特市| 杨浦区| 洛南县| 高州市| 扶沟县| 新巴尔虎左旗| 和顺县| 石泉县| 栾川县| 靖州| 昆明市| 修水县| 汉中市|