[bug]Vc7\include\yvals.h(18) : fatal error C1017: invalid integer constant expression

G

Guest

The following code snippet can be build in VC 6.0, but failed in VC 2003.
//////////////save the following code in t.cpp
#define _MT
#define _WIN32_WINNT 0x0500
#include <iostream>
#include <process.h>
#include <windows.h>
#pragma comment(lib,"libcmt.lib")
__int64 Counter=0;
BOOL volatile stop_thread = FALSE;
void __cdecl BasicThreadProc( void* pArguments )
{
__int64* p = (__int64*)pArguments;
__int64& c = *p;
std::cout<< "In BasicThreadProc...\n" ;
while(!stop_thread)
c +=1;
std::cout<<"result:";
char buf[32];
_i64toa(c, buf, 10);
std::cout<< buf;
std::cout<<std::endl;
}
int main()
{
_beginthread(BasicThreadProc,0,(void*)&Counter);
HANDLE hTimer = NULL;
LARGE_INTEGER liDueTime;
liDueTime.QuadPart=-100000000;
// Create a waitable timer.
hTimer = CreateWaitableTimer(NULL, TRUE, "WaitableTimer");
SetWaitableTimer(hTimer, &liDueTime, 0, NULL, NULL, 0);
WaitForSingleObject(hTimer, INFINITE);
CloseHandle(hTimer);
stop_thread = true;
getchar();
return 0;
}

I use the following file to build this cpp file
call "C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"
cl /TP "C:\Temp\t.cpp"
del "C:\Temp\t.obj"
pause

call "D:\Apps\vs2003\Vc7\bin\vcvars32.bat"
cl /TP "C:\Temp\t.cpp"
del "C:\Temp\t.obj"
pause
 
D

David Lowndes

The following code snippet can be build in VC 6.0, but failed in VC 2003.

Failed how, what's the error?

Dave
 
H

Holger Grund

The following code snippet can be build in VC 6.0, but failed in VC 2003.
//////////////save the following code in t.cpp
#define _MT
You shouldn't define _MT. Use the compiler switches /MT(d) ot /MDd

I don't have a copy of VC 7.1 here. But I guess the MS DW config
header yvals.h defines _MULTI_THREAD as _MT or uses
an #if _MT.

The compiler will define _MT to 1.

-hg
 
G

Guest

The error message is in the caption.
I can paste it again.
D:\Apps\vs2003\Vc7\include\yvals.h(18) : fatal error C1017: invalid integer
constant expression

Is there someone who is willing to give a try?
 
G

Guest

I know how to set the compiler options, but I want to compile the file in
command line.
In fact I wrote a shell extension to build a single CPP file with VC6/VC7.
So I want to avoid creating a project for a single CPP file.
 
D

David Lowndes

Is there someone who is willing to give a try?

Holger obviously had and suggested that you don't define _MT in your
source code. It compiles OK if you do as he suggested or if you change
your code to:

#define _MT 1

Dave
 
G

Guest

OK, #define _MT 1 works happily.
It is my problem that "I don't have a copy of VC 7.1 here." stopped me from
further thinking.
Thank you all.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top