2017-07-19 89 views
1

我注意到在函数前面定义一个空的PURE会混淆VS2015中的Intellisense。与此同时,字母(purePurePurE)的其他非大写字母组合的作品:为什么`PURE`定义“混淆”Visual Studio 2015 Intellisense?

#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,它可以工作。

注意commentless提示这里:

Specifying PURE confuses VS

与正确的智能感知提示这里:

Other macros work fine

顺便说一句,因为代码是GCC之间共享为什么我这样做的原因和MSVC,因此PURE是例如GCC中的__attribute__((pure))。所以现在看来​​我必须改变现有的GCC代码库才能够在Visual Studio中使用F12,除非我做错了什么。

这是一些预定义的宏,它在某种程度上与Intellisense有关吗?

回答

1

复制您的共享代码,我在VS 2015年和2017年进行了测试,发现结果在VS 2017年可以弹出的“纯”满足您的要求的评论,请检查: enter image description here

你可以尝试从Visual Studio Downloads下载并安装VS 2017,或者在VS 2015中向VS产品团队报告此问题this page以寻求更专业的支持。

+0

哦,这是你。 :)也许我可以换个时间。谢谢! – Lou