C++:有没有一种方法可以让这个反射宏与IntelliSense一起工作
C++: Is there a way to make this reflection macro work with IntelliSense?
我一直在寻找一种方法来对我的C++结构进行某种反思(以帮助序列化以及一般的数据管理)。我找到了这个答案:C++预处理器:避免成员变量列表的代码重复
这似乎是一个很好的解决方案,直到我实现了它,Visual Studio的IntelliSense爆炸了。到处都是红色的歪歪扭扭的!它无法使用REFLECTABLE宏理解结构中的成员变量名称,即使编译器可以理解。
我实施错了吗?我能做些什么让IntelliSense理解变量名吗?有没有更好的替代方法来获得与IntelliSense配合良好的C++反射?它必须能够迭代结构的成员,并在运行时获得变量的名称。
您有三个选项可以选择。
首先,您可以使用__INTELLISENSE__
来定义intellisense的替代方案:
struct Person
{
Person(const char *name, int age)
:
name(name),
age(age)
{
}
private:
#ifdef __INTELLISENSE__
const char * name;
int age;
#else
REFLECTABLE
(
(const char *) name,
(int) age
)
#endif
};
但是,如果你不想重复成员变量,但想去掉红线,你可以禁用intellisense(在这里解释),因为它似乎完全被破坏了。
现在,如果您仍然希望有良好的诊断和代码完成,那么最好使用另一个IDE或编辑器。因为大多数IDE或编辑器都不会对此进行分解。对于IDE,你可以尝试KDevelop、CodeLite、Netbeans、Eclipse、QtCreator等。对于编辑器,你可以试试emacs、vim、sublime等。(理想情况下,使用clang集成)。它们都提供了比visualstudio更好的诊断和代码完成。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 光线跟踪器灯光反射错误
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++:有没有一种方法可以让这个反射宏与IntelliSense一起工作
- 反射矩阵不能正常工作
- c#中的反射不能与COM(和c++)一起工作