Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从监视列表中隐藏某些类公共属性?_C++_Class_Templates_C++builder_Declspec - Fatal编程技术网

C++ 如何从监视列表中隐藏某些类公共属性?

C++ 如何从监视列表中隐藏某些类公共属性?,c++,class,templates,c++builder,declspec,C++,Class,Templates,C++builder,Declspec,我仍然在使用BDS2006(Turbo explorer C++),升级仍然不是一个选项。我在调试一些更高级的模板/类时遇到了一个问题,这些模板/类包含以下属性: declspec(属性(get=?,put=?)???; 作为成员变量处理,使监视列表变为,如果太多,则调试器会发疯。结果是在断点和跟踪期间大大减慢了速度,并且在IDE本身处于监视列表中时偶尔(经常)冻结了该类(唯一的补救方法是使用windows任务管理器结束bds.exe进程树) 所以我的问题是: Q1:如何隐藏这些属性,使它们在

我仍然在使用BDS2006(Turbo explorer C++),升级仍然不是一个选项。我在调试一些更高级的模板/类时遇到了一个问题,这些模板/类包含以下属性:

declspec(属性(get=?,put=?)???;
作为成员变量处理,使监视列表变为,如果太多,则调试器会发疯。结果是在断点和跟踪期间大大减慢了速度,并且在IDE本身处于监视列表中时偶尔(经常)冻结了该类(唯一的补救方法是使用windows任务管理器结束
bds.exe
进程树)

所以我的问题是:

Q1:如何隐藏这些属性,使它们在监视列表中不可见,同时仍保持公共状态??

我认为这可能有某种宏观或指令。将那些非
公开
不是一个选项。监视列表像处理成员变量而不是函数一样处理这些属性

下面是一个小示例(从我的GLSL数学中提取
vec2
类):

//---------------------------------------------------------------------------
模板类2
{
公众:
T-dat[2];
_vec2(T_x,T_y){x=x;y=y;}

_vec2(){for(int i=0;i您可以通过在监视窗口中单击鼠标右键禁用监视表达式/变量,并取消选中任何变量前面的复选框。这将从调试器中禁用它们,但它们仍将保留在监视窗口中

您还可以“分组”监视表达式/变量,然后启用/禁用组中的所有监视以打开/关闭监视值的显示-这可以提高调试器的速度

禁用手表

禁用监视表达式,以便在单步执行或运行程序时不监视它。监视设置保持定义状态。禁用监视可提高调试器性能

您还可以决定要包括哪些符号表以进行调试-签出


当你想在调试环境中改变对象的可视化方式时,你可以尝试使用。我很愿意给你一些信息,但看看这个主题的大小,也许你想在决定是否使用这项技术之前先看一看。

好吧,不要滥用复杂的属性。这是非常可疑的您可能还有20个自己类型的属性。由于所有属性都使用相同的2个getter(即
get_xy
get_yx
以及getter的相同内容),因此代码更加可疑在这一点上,你只能拥有2个属性,这将是非常快的。如果你有这样一个旧编译器,你有一个更旧的计算机吗?你的代码也依赖于非标准的扩展,所以最好尽快停止使用它们,这样你就可以使用一个更先进的编译器。2020,所有C++软件开发。T应该使用C++ 17。你还没有在C++ 11!所以你没有使用现代C++。@ Pel1970 1970。GETSter和Stter模仿GLSL <代码> VEC< /Cord>类型属性,对此没有任何怀疑(它提供了与GLSL相同的功能元素)。……这只是最简单的2D示例,完整代码可以达到4D…2。正如在问题中提到的,移植到更新的甚至不兼容的编译器不是一个选项。你说的是什么?<代码>非标准扩展< /代码>?更新的C++标准通常不添加任何可用的(在日常的日常编程任务中)。除了移植到不同的非x86/x64/ARM平台的问题之外,不管怎样,你的评论都没有解决我的问题…@ Prim1970,这是比C++代码更具体的问题,因为它是一个众所周知的bug,而且C++的Builder似乎没有一种定制手表显示的方法,我认为唯一的工作就是停止使用。它们(或者至少不是递归方式)。<代码>属性< /C> >不是标准C++的一部分,但至少微软编译器具有它们()它们被标记为特定于Microsoft的。单个启用禁用不是结构和类的选项,因为它们被分组在一起,第一行包含所有内容,所以它不会解决任何问题,因为禁用类/结构的第一个条目将隐藏所有内容…我以前从未使用过调试符号表,您有示例吗?I c添加一个路径,但它不做任何事情,也不能在任何地方编辑…它需要某种文件类型吗?什么格式?我打赌它只是选择要添加到可监视变量列表中的exe/obj/dll内容,而不是什么属性…希望宏可以直接键入源代码类似于您可以启用/禁用的方式语句SBDS2006不是MSVC++IDE,它在Borland/Embarcadero环境中能工作吗?很抱歉,我不知道这一点。我一直在Visual Studio中工作,在那里我经常使用本机可视化程序。就您的IDE而言,我不知道,但您可以使用它作为开始搜索点(或向Embarcadero技术支持提出问题)。我刚刚发现这个主题适用于比我使用的版本更新得多的Borland/Embarcadero IDE,所以我需要检查它是否也适用于我…@Spektre:很高兴看到你找到了一个起点。你能将你的IDE升级到所需的版本并通知我们结果吗?不幸的是,不,我还不能升级…那太贵了(不仅是IDE本身,还有相关的东西,如驱动程序、许可证等)并且需要大量的工作将应用程序移植到新的编译器/IDE…上次升级需要大约一年的时间,现在根本没有足够的时间和人力可供使用…看起来他们在2010年添加了此功能,因此在2006年无法工作:(视频中提到了一些旧的方式…无论如何+1,寻找一个可能的方向。)
[+]a    { { 0.1, 0.2 }, ????, ????, ????, ????, ????, ????, ????, ????, ????, ????, ????, ????, ????, ????, ... }
[-]a    { { 0.1, 0.2 }, ????, ????, ????, ????, ????, ????, ????, ????, ????, ????, ????, ????, ????, ????, ... }
  [+]dat {0.1,0.2}
vec2 a[20];
a[0]=vec2(0.1,0.2);
a[1]=a[0]; // <<- here breakpoint
vec2 a[20];
a[0]=vec2(0.1,0.2);
a[1]=a[0]; // <<- here breakpoint
| a[0].dat,20 | { 0.1, 0.2 }, { 0.1, 0.2 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } |