__PRETTY_FUNCTION__ in Visual C++

2019-07-04 06:56发布

While playing around with Visual C++ from Visual Studio 2017 (15.5.6 to be exact) I noticed that __PRETTY_FUNCTION__ from GCC seems to work! - to some degree at least…

It did show up along suggestions while typing: enter image description here

Also it had its value shown in tooltip as expected: enter image description here

And yet compiling the code using __PRETTY_FUNCTION__ results in an error:

error C2065: '__PRETTY_FUNCTION__': undeclared identifier

So, is there any way to make it work in Visual C++? Some include perhaps? Or some special compilation settings? (I think I'm using default ones.) Why would it work in shown examples, but not in actual use?!

Note, that I'm not looking for Visual C++ alternatives for __PRETTY_FUNCTION__. I know them already. I'm just surprised and curious about the behavior here.

1条回答
做自己的国王
2楼-- · 2019-07-04 07:22

So, is there any way to make it work in Visual C++? Some include perhaps? Or some special compilation settings? (I think I'm using default ones.) Why would it work in shown examples, but not in actual use?!

No.

The Visual Studio uses the Edison Design Group C++ Front End for the InteliSense, as explained in the Visual C++ Team Blog's Rebuilding Intellisense and here, and not the Microsoft C++ compiler. This means that some of the features available to the Intellisense are not available in compile time.

EDG's C++ Front End documentation mentions that its supports some of the GCC pre-defines like __PRETTY_FUNCTION__ on page 71 - "1.13 Predefined Macros" together with Microsoft's __FUNCSIG__.

You can even see the version of the EDG by typing __EDG_VERSION__ and hovering over it.

查看更多
登录 后发表回答