問(wèn):我想訪問(wèn)某個(gè)字節(jié)中的單個(gè)位,但是當(dāng)我嘗試用絕對(duì)變量結(jié)構(gòu)定義一個(gè)位變量時(shí),例如:
static bit bitvar @ ((unsigned)&bytevar)*8+0;
我得到一個(gè)編譯錯(cuò)誤。我該怎么做?
答:簡(jiǎn)單地回答是,你不能這么做。使用@定義絕對(duì)變量結(jié)構(gòu),在編譯時(shí)需要一個(gè)已知地址。(譯者注:編譯器編譯到這一行時(shí),bytevar的地址并不確定)
更詳細(xì)的(可能也是更有用的)回答是,這要看具體你是要做什么。你可能會(huì)在下面的一些簡(jiǎn)單的宏定義中找到你所需要的東西:
#define testbit(var, bit) ((var) & (1 <<(bit)))
#define setbit(var, bit) ((var) |= (1 << (bit)))
#define clrbit(var, bit) ((var) &= ~(1 << (bit)))
或者你可以定義一個(gè)聯(lián)合union,例如:
union both {
unsigned char byte;
struct {
unsigned bit0:1; // etc.
} bits;
} var;
于是你就可以直接引用var.byte或者var.bits.bit0。
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
相關(guān)推薦
比如需要一個(gè)變量,8位足夠,那么定義的時(shí)候是定義成u8?u16?u32?
“32位在某些情況下需要對(duì)齊,對(duì)datafalsh讀寫(xiě)時(shí)地址要是4的整數(shù)倍
編程方面如果RAM足夠考慮
發(fā)表于 05-14 07:29
空間并寫(xiě)入新的代碼。此外還具備執(zhí)行效率高,壽命長(zhǎng)優(yōu)點(diǎn)。
本文檔介紹和說(shuō)明在 MDK 開(kāi)發(fā)環(huán)境下將代碼重定向到 RAM 中執(zhí)行的方法。本文檔使用開(kāi)發(fā)環(huán)境位 keil UVision,版
發(fā)表于 05-16 11:58
拷貝到對(duì)應(yīng)ram內(nèi)存中,當(dāng)在線標(biāo)定時(shí),會(huì)直接操作ram中相應(yīng)的地址,以實(shí)現(xiàn)參數(shù)在線修改。
請(qǐng)問(wèn)ESP32如何實(shí)現(xiàn)Flash到ram重
發(fā)表于 06-14 06:31
隨著單片機(jī)功能的拓展,協(xié)議棧or算法因此變得越來(lái)越龐大,此時(shí)內(nèi)部RAM是不能滿足需求了,必須將變量定義在外部RAM(如SDSRAM)。那么如何將變量定義在外部
發(fā)表于 01-21 08:28
拷貝到對(duì)應(yīng)ram內(nèi)存中,當(dāng)在線標(biāo)定時(shí),會(huì)直接操作ram中相應(yīng)的地址,以實(shí)現(xiàn)參數(shù)在線修改。請(qǐng)問(wèn)ESP32如何實(shí)現(xiàn)Flash到ram重
發(fā)表于 02-13 08:42
拷貝到對(duì)應(yīng)ram內(nèi)存中,當(dāng)在線標(biāo)定時(shí),會(huì)直接操作ram中相應(yīng)的地址,以實(shí)現(xiàn)參數(shù)在線修改。請(qǐng)問(wèn)ESP32如何實(shí)現(xiàn)Flash到ram重
發(fā)表于 03-06 08:35
如果S32K312運(yùn)行autosar RAM資源不夠用導(dǎo)致程序死機(jī),請(qǐng)問(wèn)有什么好的解決辦法嗎?我們可以想到一些方法1、直接定義函數(shù)和變量給TCM執(zhí)行。這涉及到修改啟動(dòng)文件和重新
發(fā)表于 03-15 06:24
RAM的位擴(kuò)展接法
發(fā)表于 12-04 17:16
?2065次閱讀
原文鏈接:freescale 16位單片機(jī)的地址映射--(1)前言 freescale 16位單片機(jī)的地址映射--(2)飛思卡爾16位單片機(jī)
發(fā)表于 11-24 07:43
?1128次閱讀
成員變量是指定維度的成員變量,用于標(biāo)識(shí)某個(gè)維度成員。簡(jiǎn)介由 Analysis Services 內(nèi)部使用的值,以標(biāo)識(shí)某個(gè)維度成員。MemberKeyColumn 屬性指定維度的成員
發(fā)表于 12-11 13:50
?6885次閱讀
本文檔的主要內(nèi)容詳細(xì)介紹的是DSP從FLASH到RAM的方法詳細(xì)資料說(shuō)明。
發(fā)表于 01-17 16:58
?22次下載
位帶操作牽涉到的一個(gè)重要知識(shí)點(diǎn)就是指針變量。這種位帶映射操作,就是操作映射過(guò)后的地址,其實(shí)就是操
發(fā)表于 02-08 15:57
?3次下載
這種位帶映射操作,就是操作映射過(guò)后的地址,其實(shí)就是操作指針變量(存放地址的變量)。 指針變量
發(fā)表于 12-29 13:52
?714次閱讀
問(wèn):如何指定代碼、常數(shù)或變量到某個(gè)特定的地址? 答:使用“#pragma psect”偽指令來(lái)把代碼、常數(shù)或變量放到你定制的psect。于是你就可以使用鏈接器選項(xiàng)來(lái)把這個(gè)定制的psect放到
發(fā)表于 01-22 14:52
?2482次閱讀
TSMaster信號(hào)映射模塊可以將數(shù)據(jù)庫(kù)變量映射為系統(tǒng)變量,經(jīng)過(guò)映射后的系統(tǒng)變量就等同于數(shù)據(jù)庫(kù)中
發(fā)表于 02-19 14:00
?468次閱讀
評(píng)論