我定义了一堆宏,只为项目的一小块区域内的目的服务。我想取消定义它们以便它们不会污染全局命名空间,但Visual Studio仍然在其他文件中确认#undef之后它们的存在。 IE:
//A.hpp
#define A_MACRO
...
//~A.hpp
#undef A_MACRO
...
//B.hpp
#include "A.hpp"
#include "~A.hpp"
...
//main.cpp
#include "B.hpp"
A_MACRO // <- code completion recognizes this despite it being undefined
// and invalid
我只需要处理这个问题,还是有另一种方法可以完成我想要做的事情?
编辑:看起来Code :: Blocks正好将其删除到#undef之外,所以它必须是Visual Studio设置中的内容。答案 0 :(得分:0)
它是一个非常有效的标签。
请考虑您可能想要添加的代码中的某处:
#ifdef A_MACRO
...
#endif
甚至:
#ifndef A_MACRO
...
#endif
如果您的Intellisense退出工作会不会很糟糕?
宏标签是这两种情况下的有效标签。是否当前定义了宏。