* Martin Sebor:

> At the same time, the following passes on x86_64:
>
>   __attribute__ ((aligned (1))) void f1 (void) { }
>   _Static_assert (__alignof__ (f1) == 1);   // wrong alignof result
>
>   __attribute__ ((aligned)) void f0 (void) { }
>   _Static_assert (__alignof__ (f0) == 16);
>
>   __attribute__ ((aligned (2))) void f2 (void) { }
>   _Static_assert (__alignof__ (f2) == 2);

Is there any value in implementing alignof on functions?

sizeof (f1) is defined to be 1, allegedly to support function pointer
arithmetic (which is why sizeof (void) is 1 as well).  In practice, this
is confusing to the programmer because the size of a function is at
least known to the linker.

Thanks,
Florian

Reply via email to