Имеется следующий код:
Код
void a(void)
{
printf("a");
}
typedef void function(void);
function *ptr_funca = a;
int main(void)
{
if (a != ptr_funca)
{
printf("!");
}
}
{
printf("a");
}
typedef void function(void);
function *ptr_funca = a;
int main(void)
{
if (a != ptr_funca)
{
printf("!");
}
}
Данный код, скомпилированный под архитектуру i386, не печатает восклицательный знак, а под архитектуру Cortex-M3 "печатает".
Если сделать указатель на функцию или саму функцию статичными, то всё становится нормально. Под i386 компиляция происходит чистым gcc, под Cortex - arm-none-eabi-gcc. В чём может быть подвох?