Ok, thank you for your answer, I missed that apparently.

Pierrick

On 18/06/2025 11:46, Jakub Jelinek wrote:
> On Wed, Jun 18, 2025 at 11:34:42AM +0200, Pierrick Philippe wrote:
>> Hi everyone,
>>
>> I am currently reading the C23 standard along the pre-release GCC 16
>> documentations (users and internals), and I noticed that there is no
>> mention on how to create new attributes using the new C23 standard
>> attribute specifier ('[[new_attr]]').
>> I mean, I believe it would be transparent from the attribute handling
>> whether you specified it with the C23 standard notation or the
>> traditional GNU syntax.
>> But what I mean is that I could not find in the source code where the
>> 'gnu::' namespace prefix is created, or if they were means to create new
>> namespace prefix for attributes from external plugins.
>>
>> So I do have two questions:
>>
>> 1 - Is the current implementation fully compatible with the '[[]]'
>> attribute specifier syntax?
> Sure.
>
>> 2 - Are there means to create new namespace prefix attribute from plugin
>> code ?
> See e.g.
> ...
> const struct scoped_attribute_specs c_common_gnu_attribute_table =
> {
>   "gnu", { c_common_gnu_attributes }
> };
> ...
> const struct scoped_attribute_specs c_common_clang_attribute_table =
> {
>   "clang", { c_common_clang_attributes }
> };
> in c-family/c-attribs.cc.
> E.g. c/c-objc-common.h then registers those:
> static const scoped_attribute_specs *const c_objc_attribute_table[] =
> {
>   &std_attribute_table,
>   &c_common_gnu_attribute_table,
>   &c_common_clang_attribute_table,
>   &c_common_format_attribute_table
> };
>
> #undef LANG_HOOKS_ATTRIBUTE_TABLE
> #define LANG_HOOKS_ATTRIBUTE_TABLE c_objc_attribute_table
> Backends or plugins can register further attributes (or further attributes
> in specific namespaces).
>
> If all you care is whether in source code you can use some different
> attribute namespace, you can, just use [[whatever::something]] etc.,
> perhaps with warnings from the compiler, or -Wno-attributes=whatever::
> or -Wno-attributes=whatever::something options allows to ignore warnings
> about specific attributes.
>
>       Jakub
>

Reply via email to