沙海拾貝(一) 201409

2021-07-05 09:22:53 字數 1552 閱讀 6750

鑑於有很多零碎的知識,寫在筆記本裡面容易搞忘了,所以單獨開一篇文章來記錄。

1.1、__no_init 是乙個segment(段),是給linker用的,定義到不初始化的塊中去。

常用來儲存一些敏感資訊,特殊應用場合下的不能被復位的資料或者做復位判斷標誌等資料(詳細使用方法見:)

1.2、@就是指定位址(大部分編譯器都是這麼用的)。

在定義全域性變數的時候,比如  int char;   即使你沒有賦值給他,編譯器還是會給他乙個初始化值0,編譯的時候編譯器把他分配到初始化為零的那個segment中去了。

編譯器預設的有幾個塊

a.初始化為零的塊

b.初始化不為零的塊

c.不初始化的塊

我們可以定義自己的塊,**如下:

extern volatile byte spprxstatus;

extern volatile byte spptxstatus;

__no_init spp_rx_struct rxdata @ "pm0_xdata";

__no_init spp_tx_struct txdata @ "pm0_xdata";

如上面的pm0_xdata就是自己定義的乙個塊,那麼這個塊是個什麼屬性呢?是__no_init 屬性,有了這個屬性,編譯器只給你分配空間,不給你初始化。

我們知道,乙個漢字佔兩個位元組,而單引號只能放乙個位元組,所以我們使用雙引號(放字串),形式如下:

const char* name = "例子";

senddatabuf[9] = *name;

senddatabuf[10] = *(name + 1);

senddatabuf[11] = *(name + 2);

senddatabuf[12] = *(name + 3);

或者

const char* name = "例子";

senddatabuf[9] = name[0];

senddatabuf[10] = name[1];

senddatabuf[11] = name[2];

senddatabuf[12] = name[3];

【end/2015-09-23】

今天看ucos-ii的核心**,突然分不清楚乙個很簡單的小問題,因此做乙個小記錄,**如下:

#define  hong_ding_yi 10      //巨集定義  前面代替後面

typedef unsigned char u8; //重新命名 後面代替前面

作用:將後面的字串用乙個清晰易記的名字來替代,編譯時後面的內容將取代前面的巨集名

優點:方便程式修改、提高程式執行效率

裝逼說法:被定義為「巨集」的識別符號稱為「巨集名」。在編譯預處理時,對程式中所有出現的「巨集名」,都用巨集定義中的字串去代換,這稱為「巨集代換」或「巨集展開」。

作用:重新命名,便於理解和記憶

優點:方便不一混淆

【end/2015-12-04】

苦海拾貝 職業思考

真正的愛一行才能做好一行,之前是只聽過這個道理,秋招之後有點懂了。大家的offer基本可以分為三個等級 普通,sp,ssp。我發現能拿到ssp的,靠的並不是實習的時長,他們絕大部分都對 十分熱愛,對相關知識有強烈的探索慾望。對應的,他們也基本建立了相關的知識體系,已經對工作內容有了較為系統的理解。而...

jquery常用技巧拾貝

本文目的 使用jquery有一段時間,積累了一些使用技巧,記錄在這裡,方便日後查閱。jquery的確實現了對使用者的承若 write less,do more 文字框 html頁面 獲取文字框輸入 var stxt id demo text val stxt變數現在的值為文字框的輸入 設定文字框 i...

碼海拾貝 之Perl 獲取日期以及日期的加減

在perl 中,不安裝其他模組的狀況下,可以使用 localtime 來獲取當地日期和時間。在標量上下文中,返回的是字串格式。my localtime localtime print n localtime n 返回 thu jan 1 18 17 56 2015 在列表上下文中,返回的是描述當前時...