上回在公司运行VS 2003 突然弹出VS 2003 报错的问题,在运行是发现了一个VS2003的Bug。直接导致6个VS 2003无法运行,需重新安装,下面就说一下VS 2003的相关BUG。。
我在此先描述一下关于VS 2003的Bug,再讨论 iostream 的Bug。
因为在对于此Bug的测试中,直接导致其6名同事的VS 2003 报错,需要重装。及 遥望 的VC 6 的完全损毁。
Part 1: 关于 Visual Studio 2003 Enterprise Architect 的 Bug: #t#
在我发现 iostream 的一个怀疑是 Bug 的问题后,将其剥离出来,作为单独的测试程序,发送给了 遥望(其又转发至其同事)。据 遥望 反馈,他们的步骤如下:
1. 先建一空的 C++ 控制台项目;
2. 向其中添加一个空的cpp文件;
3. 将我的代码(随后附上)拷贝进去;
4. 编译。
之后链接器抛出两个错误:
test error LNK2001: 无法解析的外部符号 _main
test fatal error LNK1120: 1 个无法解析的外部命令
之后所有的控制台程序就都不能编译,且发现,随便在文件里写什么,编译单个文件的时候都不会报错,但编译整个工程的时候就还是那两个错误” 我确定,在我的代码中没有任何语法错误。 于是我照着VS 2003 报错其步骤试验,果然抛出以上两个错误。但幸好我其它的控制台程序还可以正常编译。
此后找人再试,编译通过,没有发现问题。于是话题转移到了 iostream 的Bug 上。
于是,遂将该问题送至 MicroSoft。另外,不保证该错误肯定会出现,或导致VS 2003 报错,但大家如果要试,仍请三思。毕竟,7个VS 2003,一个VC6, 一个VC2003 测试, 7个VS 2003 报错,其中6个损毁;一个VC 6损毁,一个 VC2003 平安。
其全部代码如下:
- #include "windows.h"
- #include "iostream"
- using namespace std;
- /*
- FUNCTION DEFINITIONS: Bug Genesis
- */
- BOOL BugGenesis()
- {
- TCHAR szLinkString[MAX_PATH];
- ZeroMemory( szLinkString, MAX_PATH * sizeof( TCHAR ) );
- cout<<"If you input the \"wew; we;\",the bug will occur:"<<endl;
- cin>>szLinkString;
- cout<<"The Input String Are:"<<szLinkString<<endl;
- return TRUE;
- }
- /*
- FUNCTION DEFINITIONS: Main Functions
- */
- int main()
- {
- int iChooseNum = 0;
- cout<<"Iostream Bug:"<<endl;
- while( TRUE )
- {
- cout<<"1. Bug Genesis:"<<endl;
- cout<<"0. Exit;"<<endl;
- cout<<"Choice:";
- cin>>iChooseNum;
- if( !iChooseNum ) break;
- switch( iChooseNum )
- {
- case 1:
- BugGenesis();
- break;
- default:
- cout<<"Error Choice!"<<endl<<"Please Rechoose!"<<endl<<endl;
- break;
- }
- }
- return 0;
- }