Keil中C/C++優化等級選幾?
這意味著什麼?
如果需要優化後代碼才能執行,那是不是意味著,程式碼設計有問題(RAM的使用)?
(1)3是最高優化,省了很多空間,0是不優化,很多多餘的東西都佔地方,連接出來不是RAM不夠就是ROM不夠,或者堆疊越界之類的錯誤了
(2)不是程式碼設計問題,同一個程式可以用查表法,也可以用其他的方法等,除法可以用/也可以用移位來實現,不同的實現方法花費的時間和空間不一樣的,一般來說優化後能執行的,不優化就肯定能執行的吧,只是效率問題了,這就是常說的犧牲時間換空間或者犧牲空間換時間了
(3)最近在做STM32模擬IIC的時序時,發現優化等級設定為-O1的時候能夠正常執行,但是設定成-O2,-O3的時候就出錯了,並且延時時間變得很難調整,正式被這個害慘了
相關推薦
Keil中C/C++優化等級選幾?
拿到別人的一份程式碼,他選的是Level 3,如果選成 Level 0,連結會出錯。 這意味著什麼?如果需要優化後代碼才能執行,那是不是意味著,程式碼設計有問題(RAM的使用)? (1)3是最高優化,省了很多空間,0是
STM32開發筆記11: 在Keil中使用C++進行程式設計
微控制器型號:STM32F030R8 希望在Keil中使用C++進行程式設計,開始時,總是報錯,經過仔細分析,原因時Keil在預設情況下不支援C++進行程式設計。本文將介紹在Keil中使用C++進行程式設計的方法。 1、在Keil中使用C++進行程式設計,首
keil中的C與彙編混合程式設計
keil C語言與組合語言混合程式設計 C與彙編混合程式設計主要有以下幾種: (1)C語言中嵌入彙編(2)無引數傳遞的函式呼叫(3)有引數傳遞的函式呼叫 (1). C語言中嵌入彙編: 1、在 C 檔案中要嵌入彙編程式碼片以如下方式加入彙編程式碼: #
KEIL編譯器C語言編譯選項優化等級說明
0 Minimum optimization. Turns off most optimizations.It gives the best possible debug view and the lowest level of optimization. 近乎不優化,用於除錯程式碼。出
KEIL編譯器【C語言編譯選項優化等級說明】
參考:https://blog.csdn.net/chengdong1314/article/details/53463183KEIL編譯器C語言編譯選項優化等級說明摘錄於:http://blog.csdn.net/conquerwave/article/details/10
C#中周,月,第幾周,周開始結束時間de方法總結
get months 開始時間 fwe cal 得到 pic html csharp 1、c#獲取當前時間是本年的第幾周,本月的第幾周 private static int getWeekNumInMonth(DateTime daytime)
【轉】C 編譯器優化過程中的 Bug
你是 should 有一個 avi return 們的 團隊 ref 似的 一個朋友向我指出一個最近他們發現的 GCC 編譯器優化過程(加上 -O3 選項)裏的 bug,導致他們的產品出現非常詭異的行為。這使我想起以前見過的一個 GCC bug。當時很多人死活認為那種做法是
關於C語言中用Keil軟體製作Lib庫檔案的幾點經驗(.lib庫檔案可以讓源函式封裝保密,仍可呼叫)
1.關於制止LIB庫檔案的幾點經驗 1. 一個工程如何生成lib檔案: 2. 一個生成lib檔案的工程可以呼叫這個工程中不存在的函式,只需要在.h檔案中宣告這些不存在函式的原型,然後在呼叫這個lib檔案的工程中實現這些函式即可。 3. 由上面一點
C/C++ 中 int 轉 string,string 轉 int 的幾種方法
C int 轉 string sprintf int a = 1; char strDst[256] = {0}; sprintf_s(strDst,256,"%d",a); itoa int
C++中函式返回陣列指標的幾種方法總結
因為陣列不能被拷貝,所以函式不能返回陣列。不過,函式可以返回陣列的指標或引用。返回陣列指標的方法有以下幾種: 1、方法一:使用類型別名。如下 typedef int arrt[10];//arrT是一個類型別名,它表示的型別是含有10個整數的陣列
請教C#對於介面中有多個複選框時如何處理的問題
// 指數 -- 當對陣列按各位進行排序時,exp=1;按十位進行排序時,exp=10;... int exp; // 陣列a中的最大值 int max = getMax(arr); // 從個位開始,對陣列a按"指數"進行排序 for (exp = 1;
C語言中有關於資料型別的幾個問題
1.整型資料轉換成字元型資料時資料過大; int ch1 = 5566; char ch2 = (char)ch1; printf("%c \n", ch2 ); 輸出亂碼�;char型別最大範圍到127,所以ch1最大隻能到127。 2.int ch1 =
C++中的RVO優化,針對返回值為物件時臨時物件的優化
摘要: RVO (return value optimization) 和NRVO (named return value optimization) 是C++在處理一個函式返回類物件並將返回值賦給另一個物件時,為了減少拷貝構造次數以及析構次數而採用的一種編譯器優化技術。 當函式的返回值
C#中form窗體之間的傳遞幾個方法學習
在windows form之間傳值,我總結了有四個方法:全域性變數、屬性、窗體建構函式和delegate。 第一個全域性變數: 這個最簡單,只要把變數描述成static就可以了,在form2中直接引用form1的變數,程式碼如下: 在form1中定義一個static
C#中關於增強類功能的幾種方式
存儲 add eof .html using com 靜態方法 ant tel C#中關於增強類功能的幾種方式 本文主要講解如何利用C#語言自身的特性來對一個類的功能進行豐富與增強,便於拓展現有項目的一些功能。 拓展方法 擴展方法被定義為靜態方法,通過實例方法語法進行調用。
【 C/C++學習筆記整理】--3.取陣列中的其中一位,將其中幾位組合起來
10.定義一個數組,取陣列中的其中幾位,將其中幾位組合起來 const int f[10]={6,2,5,5,4,5,6,3,7,6}; int match(int num) { int k=0; for(int i=n
C/C++練習題 定義一個日期變數,進行年、月、日的輸入,計算該日期是本年中的第幾天。
問題及程式碼:/* *Copyright(c)2016,煙臺大學計算機與控制工程學院 *All right reserved. *檔名稱:main.cpp *作 者:郝昱猛 *完成日期:2016年4月28日 *版 本 號:v1.0 * *問題描述:.定
C++中const與static使用的幾個要點
(1) const使用要點 為什麼要使用const? const是定義常量的,而且const定義的常量是有資料型別的,而巨集常量是沒有資料型別的,所以編譯器可以對const常量進行型別安全檢查,而對巨集常量只是簡單的替換,沒有型別安全檢查,容易出錯。
在keil中,彙編中呼叫c函式
今天遇到個問題,以為是彙編中呼叫C函式的原因,其實不是這個原因,在這裡也溫習一下在ARM彙編呼叫C函式的方式。若在彙編中呼叫C檔案中的函式 void fun_c(void),只需要在呼叫之前,IMPORT fun_c ,其中 keil工具是不允許彙編語句頂格寫,不然會報錯。
徹底搞清c/c++中的幾個指標概念:懸垂指標和智慧指標以及啞指標和野指標
先看看下面兩段程式碼執行結果: #include<iostream> //#include <windows.h> using namespace std; int *p=NULL; void fun() {int i=10;p=&i;} v