int main()
{
int i = 0;
int *p = &i;
int *q = &&i;
return 0;
}
gcconを使用してこれをコンパイルする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;})