[Mono-dev] Error in eglib while compiling mono under Windows\VS2008
Alexander M. Batishchev
abatishchev at godfather.net.ru
Wed Nov 5 13:36:32 EST 2008
Hello everybody,
I'm trying to compile Mono from SVN under VS 2008. Opened mono\msvc\mono.sln
and got error (after successful conversion of course) in eglib:
First of all options Threat warnings as errors is On, could you please say
me what for?
Line 1854 in mono\eglib\src\unicode-data.h:
simple_upper_case_mapping_lowarea_table_count = 8;
instead of
int simple_upper_case_mapping_lowarea_table_count = 8;
And i got broken compilation immediately because of
Warning C4431: missing type specifier - int assumed. Note: C no longer
supports default-int
Warning C4218: nonstandard extension used : must specify at least a storage
class or a type
Ok, add int and go to my general problem.
Lines after 123 in mono\eglib\src\gunicode.c:
gunichar
g_unichar_case (gunichar c, gboolean upper)
{
gint8 i, i2 = 0;
guint32 cp = (guint32) c, v;
for (i = 0; i < simple_case_map_ranges_count; i++) {
if (cp < simple_case_map_ranges [i].start)
return c;
if (simple_case_map_ranges [i].end <= cp)
continue;
if (c < 0x10000) {
guint16 *tab16 = upper ?
simple_upper_case_mapping_lowarea [i] : simple_lower_case_mapping_lowarea
[i];
v = tab16 [cp - simple_case_map_ranges [i].start];
} else {
i2 = i - (upper ?
simple_upper_case_mapping_lowarea_table_count :
simple_lower_case_mapping_lowarea_table_count);
guint32 *tab32 = upper ?
simple_upper_case_mapping_higharea [i2] : simple_lower_case_mapping_higharea
[i2];
v = tab32 [cp - simple_case_map_ranges [i].start];
}
return v != 0 ? (gunichar) v : c;
}
return c;
}
Error output:
Error C2275: 'guint32' : illegal use of this type as an expression
d:\visual studio 2008\projects\mono\trunk\mono\eglib\src\gunicode.c:139
Error C2065: 'tab32' : undeclared identifier
d:\visual studio 2008\projects\mono\trunk\mono\eglib\src\gunicode.c:139
Error C2065: 'tab32' : undeclared identifier
d:\visual studio 2008\projects\mono\trunk\mono\eglib\src\gunicode.c:140
Error C2109: subscript requires array or pointer type
d:\visual studio 2008\projects\mono\trunk\mono\eglib\src\gunicode.c:140
Error is contained in line 138:
i2 = i - (upper ? simple_upper_case_mapping_lowarea_table_count :
simple_lower_case_mapping_lowarea_table_count);
If remove declaration of the variable from method's head and put it into the
line everything compiles good!
gint8 i2 = i - (upper ? simple_upper_case_mapping_lowarea_table_count :
simple_lower_case_mapping_lowarea_table_count);
Why it could be so?? Is it bug of Microsoft Visual C++ compiler or something
else?
Thanks a lot for tip!
PS. Am I right to write it here or is there a better place to do that?
===
Best regards,
Alexander M. Batishchev
More information about the Mono-devel-list
mailing list