簡體   English   中英

函數返回的地址運算符“&”

[英]Address operator “&” with function returns

這個:

bit_is_set(optos(),opt)

擴展宏bit_is_set:

((*(volatile uint8_t *)(((uint16_t) &(optos())))) & (1 << (opt)))

無法正常工作,並顯示錯誤消息:lvalue必須為一元'&'操作數。

但是這個:

uint8_t a=optos();
bit_is_set(a,opt)

工作正常。

為什么?

如何在函數返回中使用地址運算符“&”?

出於同樣的原因,這不起作用:

uint8_t optos() {
    return 4;
}

int main(void) {
    uint8_t* addr = &optos();
    return 0;
}

錯誤:需要左值作為一元'&'操作數

&操作數需要一個左值來返回地址。 臨時右值(在您的情況下為optos()返回的值)無法獲取其地址,需要先綁定到左值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM