Warning C4800

J

Jazzkt

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?
 
F

Felix Arends

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
 

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