C語言如何定義出指定變數名稱且佔1bit的全域性變數?

時間 2021-05-31 16:34:59

1樓:winterfall

提出乙個問題的時候,不妨把自己帶入設計者的角色。其實你可以自己問自己乙個問題,假設你是CPU設計者,要變數只佔1bit,位址空間應該怎麼對齊?位址線怎麼設計?

答案自然呼之欲出,嗯,就是這樣。

2樓:

不能,c語言做不到,c++也做不到。

在c/c++裡,全域性變數的意思是全域性生命空間,全域性作用域,全域性可以直接引用,(全域性的命名空間)的變數。

這真做不到,位域只是結構體的乙個成員,怎麼巨集成變數也只是在擴充套件這個全域性變數定義。

你的st語意裡真有這樣的變數?原子位操作什麼的不能算變數吧。

3樓:「已登出」

struct bit8{

int b1: 1;

int b2: 1;

int b8: 1;

bit8 x;

x.b1 = 1; // 這個就是1bit的變數

4樓:玩個球

如果有多個這樣的變數的話,可以考慮使用結構體位域。

你可以這樣用:

typedef struct

uint8_t flag1:1;

uint8_t flag2:1;

}_FLAG;

_FLAG flag;

操作結構體成員就是 flag.flag1=1;flag.flag2=1;這樣

5樓:熊貓刷牙

不同的平台不一樣 。

在大部分的8bit微控制器中, 支援這樣的變數定義。

但標準C/C++中沒有, 只能按結構體這種方式定義或者是按位操作。

補充: 好多人說的 STM32的位操作,嚴格來說不算是可定義變數,這些都是連線到不同的暫存器進行操作,不能自己使用

而8位機中,可以直接定義這樣的變數來使用,一般當做boolen。

例如 PIC微控制器中 ,可以用 bit a = 1 , b = 0;

為什麼要用負對數定義出 pH 來?

pH,pKa等屬於對數尺度。具備以下特徵之一的場合適合使用對數尺度 資料具有數量級的差異 資料符合指數增長或冪增長定律 若資料具有數量級的差異,作圖時使用對數尺度可以同時顯示大小數值 若資料符合指數增長或冪增長定律,作圖時使用對數尺度可以化曲線為直線。溶液中的離子濃度 A 在許多場合下存在明顯的數量...

C語言中如何定義可移植的結構體?

專案裡經常遇到類似的情況。我們通常都使用巨集來解決。如 struct myStruct 成員變數型別統一使用 S16 16位有符號數 U16 16位無符號數 S32 32位有符號數 U32 32位無符號數 吳才澤 在真正的多平台移植過程中,結構體定義的可移植性反而不太關注,要關注的是程式本身的可移植...

老標準的C語言這樣定義函式方法嗎?

這是 ANSI C 出現之前的事了,後來大家發現,這種寫法在宣告函式時無法檢查引數型別,於是就在 ANSI C 中改進了。但是現在好像還有一些 UNIX 的系統原始碼,為了穩定而沒有做改動。在 K R 第二版附錄裡有講。 SuperSodaSea 參考標準 C11 ISO IEC 9899 2011...