Visual studio 为什么Visual Studio 2013 Intellisense会在“__declspec(selectany)";是否定义为宏?

Visual studio 为什么Visual Studio 2013 Intellisense会在“__declspec(selectany)";是否定义为宏?,visual-studio,visual-studio-2013,intellisense,Visual Studio,Visual Studio 2013,Intellisense,我的C(不是C++)项目包含3个文件: (Lib.h) (Lib.c) (Main.c) 为什么宏语法的使用会改变Visual Studio中Intellisense的行为?Um。。。因为它是基于预编译器的,功能有限。如果你试图混淆它,它最终会被混淆。这很容易混淆,导致你描述的后果。这真的很不幸。。。 extern const int X; #define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany) GLOBAL_REMOVE_IF_

我的C(不是C++)项目包含3个文件:

(Lib.h)

(Lib.c)

(Main.c)


为什么宏语法的使用会改变Visual Studio中Intellisense的行为?

Um。。。因为它是基于预编译器的,功能有限。如果你试图混淆它,它最终会被混淆。这很容易混淆,导致你描述的后果。这真的很不幸。。。
extern const int X;
#define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany)
GLOBAL_REMOVE_IF_UNREFERENCED const int X = 123;
#include "Header.h"
void main()
{
    int Y = X; // <=== Press F12 to jump to the definition of X
}
__declspec(selectany) const int X = 123;