C++ 优化switch语句时出现Visual Studio 2005 C编译器问题

C++ 优化switch语句时出现Visual Studio 2005 C编译器问题,c++,compiler-errors,compiler-optimization,C++,Compiler Errors,Compiler Optimization,其他人可能感兴趣的一般问题: 我遇到了一个我认为是C++编译器优化(VisualStudio2005)的问题,其中有一个switch语句。我想知道的是,是否有任何方法可以满足我的好奇心,并找出编译器正在尝试但失败的地方。有什么日志我可以花一些时间(可能太多时间)破译吗 我的具体问题对于那些好奇到可以继续阅读的人,我想听听你对我为什么会在这种特殊情况下遇到问题的看法 我有一个小程序,大约有500行代码,其中包含一个switch语句。它的一些案例包含一些指针赋值 double *ptx, *pty,

其他人可能感兴趣的一般问题

我遇到了一个我认为是C++编译器优化(VisualStudio2005)的问题,其中有一个switch语句。我想知道的是,是否有任何方法可以满足我的好奇心,并找出编译器正在尝试但失败的地方。有什么日志我可以花一些时间(可能太多时间)破译吗

我的具体问题对于那些好奇到可以继续阅读的人,我想听听你对我为什么会在这种特殊情况下遇到问题的看法

我有一个小程序,大约有500行代码,其中包含一个switch语句。它的一些案例包含一些指针赋值

double *ptx, *pty, *ptz;
double **ppt = new double*[3];

//some code initializing etc ptx, pty and ptz 

ppt[0]=ptx;
ppt[1]=pty; //<----- this statement causes problems
ppt[2]=ptz;
double*ptx、*pty、*ptz;
双**ppt=新双*[3];
//一些代码初始化等ptx,pty和ptz
ppt[0]=ptx;

ppt[1]=pty// 您是否尝试将pty重命名为其他名称(即pt_y)?我有几次(例如,使用变量“rect2”)遇到了一些名称似乎是“保留”的问题。

听起来像是编译器的错误。你试过重新订购线路吗?e、 g

ppt[1]=pty; 
ppt[0]=ptx;
ppt[2]=ptz;
另外,如果您在分配的值上做手脚(这会在代码中引入错误,但可能会指出问题是指针还是数组),会发生什么情况,例如:


(或类似).< /p> 如果您需要使代码可编译而不太多地修改它,请考虑使用<代码> MeMCPY < /C> >您将值赋给<代码> PPT(1)< /代码>。这至少可以编译得很好。 然而,您的问题似乎更像是源代码的另一部分导致了这种行为

您还可以尝试将以下内容:

ppt[0]=ptx;
ppt[1]=pty; //<----- this statement causes problems
ppt[2]=ptz;
ppt[0]=ptx;

ppt[1]=pty// 这可能是由于您对ptx、pty和ptz的声明进行了优化,以使用相同的地址。然后,此操作将导致代码中的编译器出现问题

试一试


你有最新的VS2005 service pack吗?你能提供一段自我包含、可编译的代码来重现这个问题吗?@Mitch Wheat-是的。我在vista上运行vs2005-这可能是个问题,但我也安装了“在vista上运行vs2005”-service pack@sbi-我会尽力的,但可能需要一些时间。“我桌上有一大堆东西。@马丁:如果编译器需要更长的时间来编写一段代码,并且当几行代码发生变化时(我们这里不是说MLoC的
#include
或类似的东西),那么我会投票赞成这是一个编译器错误,甚至不看代码。当然,我仍然有兴趣看到导致这种情况的代码,并尝试使用VC9。(我相信微软的人也很好奇。)看起来很奇怪。当然,在我们得到一些重现问题的代码之前,很难说有什么真正有用的东西如果这是一个bug,你可能想让微软知道他说他试图在他描述的情况中重新排列这些行。:-)
ppt[0]=ptx;
ppt[1]=pty; //<----- this statement causes problems
ppt[2]=ptz;
static double *ptx;
static double *pty;
static double *ptz;