int main()
{
int i = 0;
int *p = &i;
int *q = &&i;
return 0;
}
gcc
onを使用してこれをコンパイルするLinux
と、エラーが発生します
addr.c: In function ‘main’:
addr.c:6:2: error: label ‘i’ used but not defined
コンパイラが整数ではなく整数int i
として扱うのはなぜですか? label
いつ使用し&& operator
ますか?
編集:さて、答えはある程度理解できますが、「arch/arm/include/asm/processor.h」から以下のマクロ定義を説明していただけますか。については何も述べていませんlabel
が、コメントには「program counter
」を返すことができると書かれています
/*
* Default implementation of macro that returns current
* instruction pointer ("program counter").
*/
#define current_text_addr() ({ __label__ _l; _l: &&_l;})