[cfe-dev] clang and gcc implement __PRETTY_FUNCTION__ differently
Douglas Gregor
dgregor at apple.com
Thu Dec 1 07:07:24 PST 2011
On Nov 30, 2011, at 9:03 PM, Eli Friedman wrote:
> On Wed, Nov 30, 2011 at 8:45 PM, Joerg Sonnenberger
> <joerg at britannica.bec.de> wrote:
>> On Wed, Nov 30, 2011 at 06:21:04PM -0800, Kostya Serebryany wrote:
>>> #include <stdio.h>
>>> template<class T>
>>> const char *foo() {
>>> return __PRETTY_FUNCTION__;
>>> }
>>> int main() {
>>> printf("%s\n", foo<int>());
>>> }
>>
>> This gets more interesting if the template is actually used by the
>> function. Changing it to foo(T x) and adjusting the call, the result is:
>>
>> clang:
>> const char *foo(int)
>>
>> gcc:
>> const char* foo(T) [with T = int]
>>
>> I don't think the GCC output is really better.
>
> It's worth noting that clang's output is actually ambiguous in some
> cases at the moment: you can't tell the difference between "void
> f(int)" and "template<typename T> void f(T)" with T=int.
Right. For this reason, I like GCC's output better (except that the '*' is in the wrong place <g>).
- Doug
More information about the cfe-dev
mailing list