[cfe-dev] add namespaces to C (in my local clang) OR "tag" a couple of functions

Jonas Gefele llvm.org at schrieb.de
Fri Oct 21 01:03:08 PDT 2011


Hi.

(In my local clang copy) I would like to "tag" a bunch of C/C++
functions/globals with some additional string/attribute.

As I am not yet very experienced with hacking clang, I'd appreciate your
comment whether one of the following approaches achievable without hacking
clang too much.


Way 1
=====
In fact, C++ namespaces perfectly do what I want. If I could define a
"c-with-namespaces" language version which allows to write

namespace tag1 {
   void foo();
   int  bar;
}
namespace tag2 {
   void baz();
}

and where name are resolved/mangled as in C++ I'd be happy (compability
with "real world" C does not matter in my case).

Way 2
=====
Another way that came into my mind is to define some new
__attribute__((tag("name"))). The only thing which keeps me from this (and
led me to desiring namespaces) is that I want to avoid writing

void foo() __attribute__((tag("name")));
void bar() __attribute__((tag("name")));
void baz() __attribute__((tag("name")));
...

but would like apply a given attribute to all declarations within a given
range. Something like:

__attribute_range__((tag("name")))
{
   void bar();
   void baz();
   ...
}


If any one of these approaches is doable relatively easily, in which
places would I have to look? Or is there some other approach I have
missed?

Thank you very much!

Cheers,
Jonas




More information about the cfe-dev mailing list