I'm sorry I can't exactly tell you the solution to your problem, but
printf takes whatever parameters you pass, so it doesn't exspect
anything. cout, however, seems to exspect a boolean value in this
situation. I doubt that there is an operator (<<) defined for cout which
takes a System::String as parameter, but I am not sure about this. So
maybe the compiler tries to pass a boolean value instead of a String --
try converting to a C-style string before passing it to cout or
writeFile.
Regards,
Felix Arends
-----Original Message-----
From: Jazzkt [mailto:ja**@msn.com]
Posted At: Tuesday, September 07, 2004 5:40 PM
Posted To: microsoft.public.dotnet.languages.vc
Conversation: Warning C4800
Subject: Warning C4800
I have a little issue I hope you can help me with. I
retrieve the processes that are running on my computer and
get the C4800 warning in certain situations. The code
snippet below illustrates my challenge.
Process* localAll[] = Process::GetProcesses();
printf("\nProcess name: %s",localAll[x]->ProcessName); //works fine
cout << "Process name: " << localAll[x]->ProcessName << endl; //c4800
// writing to a file
writeFile << "Process name: " << localAll[x]->ProcessName <<
endl; //c4800
warning C4800: 'System::String __gc *' : forcing value to
bool 'true' or 'false' (performance warning)
Why does it work with 'printf' but not with the others?