Do you use a localized gcc/g++ ?
C::B uses regexes to parse output of compiler and decide whether it's a warning, an error or whatever and localized output will be treated wrong in many cases.
(By the way I had the same problems with gcc 4.3, if I remeber right).
Because of this problem I use the envvar-plugin to set "LC_ALL" to "en_US.UTF-8" ("Settings.. -> Environment -> Environment variables").
I don't want to change the regexes, what's also possible, but much more work and of course more error-prone. And it depends on the translation, that is available for your compiler.
"Settings -> Compiler and debugger... -> Global compiler settings... -> Other settings -> Advanced options... -> Output parsing"