By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
429,251 Members | 2,760 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 429,251 IT Pros & Developers. It's quick & easy.

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

P: n/a
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
Nov 17 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
>The following code snippet can be build in VC 6.0, but failed in VC 2003.

Failed how, what's the error?

Dave
--
MVP VC++ FAQ: http://www.mvps.org/vcfaq
Nov 17 '05 #2

P: n/a
<www.fruitfruit.com> wrote
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
Nov 17 '05 #3

P: n/a
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?

"David Lowndes" <da****@example.invalid> wrote in message
news:k8********************************@4ax.com...
The following code snippet can be build in VC 6.0, but failed in VC 2003.


Failed how, what's the error?

Dave
--
MVP VC++ FAQ: http://www.mvps.org/vcfaq

Nov 17 '05 #4

P: n/a
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.

"Holger Grund" <ho**********@remove.ix-n.net> wrote in message
news:Oc**************@TK2MSFTNGP12.phx.gbl...
<www.fruitfruit.com> wrote
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

Nov 17 '05 #5

P: n/a
>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
--
MVP VC++ FAQ: http://www.mvps.org/vcfaq
Nov 17 '05 #6

P: n/a
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.

"David Lowndes" <da****@example.invalid> wrote in message
news:jt********************************@4ax.com...
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
--
MVP VC++ FAQ: http://www.mvps.org/vcfaq

Nov 17 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.