我注意到在函数前面指定一个空的PURE定义会混淆VS2015中的智能感知。同时,和其他非大写字母组合(pure,Pure,PurE)一起工作:
#include <stdint.h>
#define SOME
#define PURE
#define Pure
#define STUFF
// upper case "PURE"
SOME PURE STUFF uint8_t Add(uint8_t a, uint8_t b)
{
return (uint8_t)(a + b);
}
// pascal case "Pure"
SOME Pure STUFF uint8_t Sub(uint8_t a, uint8_t b)
{
return (uint8_t)(a - b);
}事实证明,智能感知不会显示标记为PURE的函数的注释,并且在某些情况下(不能确切地确定是哪种情况,但当函数位于单独的文件中时),“转到定义(F12)”函数根本不起作用。如果我将PURE重命名为Pure,它可以工作。
请注意此处的无注释工具提示:

与此处正确的Intellisense工具提示相比:

顺便说一句,我之所以这样做是因为代码是在GCC和微软的so之间共享的,例如,在GCC中,PURE就是__attribute__((pure))。因此,现在看来,除非我做错了什么,否则我必须更改现有的GCC代码库,以便能够在Visual Studio中使用F12。
这是不是某个预定义的宏,以某种方式扰乱了智能感知?
发布于 2017-07-20 15:40:00
我复制了你的共享代码,并在VS 2015和2017中进行了测试,我发现VS 2017中的结果可以弹出‘PURE’的评论,满足你的要求,请检查这个:

您可以尝试从Visual Studio Downloads下载并安装VS 2017,或者在VS 2015中向this page的VS产品团队报告此问题,以寻求更专业的支持。
https://stackoverflow.com/questions/45190534
复制相似问题