Переменные глобального регистра GNU C не могут иметь инициализаторы. Это не скомпилируется как C или C ++:
// at global scope.
register int i asm ("r12") = 10;
дает ( Godbolt ) error: global register variable has initial value
. Локальная область видимости, конечно, хорошо, но переменные регистров GNU C local - это совсем другое. (Только гарантированно что-либо делать с точки зрения взаимодействия с расширенными asm()
операторами.)
Код
#include<stdio.h>
register int i asm ("r12"); //how to initialize i here?
int main()
{
i=10; // Would rather avoid this workaround
printf("%d\n",i);
}
Как инициализировать i
в глобальной области видимости,не дожидаетесь, пока вершина главного?