GCC ignores function attributes
Nikos Chantziaras
realnc@gmail.com
Thu Jun 12 09:30:00 GMT 2014
On 12/06/14 03:31, Jonathan Wakely wrote:
> On 11 June 2014 23:36, Nikos Chantziaras wrote:
>> According to the documentation:
>>
>> https://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Function-Attributes.html#Function-Attributes
>>
>> and more specific, the example about the visibility attribute:
>>
>> void __attribute__ ((visibility ("protected")))
>> f () { /* Do something. */; }
>>
>> doesn't work for me. I have this C++ function prototype:
>>
>> const SDL_AudioSpec& __attribute__((visibility("default")))
>> spec();
>>
>> Compiling this with g++ 4.8.2 gives me:
>>
>> warning: 'visibility' attribute ignored on non-class types
>
> I think the attribute binds to the return type here, which is a
> reference (not a class type) so can't be given visibility.
>
> This applies the attribute to the function, not the return type:
>
> const SDL_AudioSpec& spec() __attribute__((visibility("hidden")));
I've found that this also works:
__attribute__((visibility("hidden"))) const SDL_AudioSpec& spec();
The only one that doesn't, is the documented one :-/ Documentation bug?
More information about the Gcc-help
mailing list