Hi Lily Lee, Your question is a gcc-help@xxxxxxxxxxx distribution list question. It is off-topic for gcc@xxxxxxxxxxx distribution list. > I have some questions about GCC/G++ 4.4.1. The first questions is that we find > that the gcc compiler support some C99 extensions by default. For example, the > gcc 4.4 document says "New character data types, per TR 19769: New character > types in C, are now > supported for the C compiler in -std=gnu99 mode, as __CHAR16_TYPE__ and > __CHAR32_TYPE__". However, the new __CHAR16_TYPE__ and > __CHAR32_TYPE__ are recognized by the compiler by default. And it seems the > -ansi and other -std options do not work. Do you aware this bug? I'm not sure if that is a bug. The default is gnu++98 for C++ code, and gnu89 for C code. If you want tighter compliance, you might want to use c89, c99, and/or c++98 and the -pedantic switch. The -ansi switch only removes features incompatible with ISO C90. The above symbols appear to be compliant with ISO C90. > Another thing is that I am reading the document about porting to gcc 4.4 here: > http://gcc.gnu.org/gcc-4.4/porting_to.html > > I am interested in the 'Header dependency changes' section. It means our > legacy codes need to be change for this. Could you tell me why you made this > change? The pre-standard older GCC C++ compiler used non-standard C++ headers because the compiler predated the standard. Since then, the GCC C++ compiler has taken measure to become compliant with the C++ standard. Which means that the non-standard headers were deprecated. If you have legacy C++ code that uses non-standard C++ headers, then likely the code is not C++ standard compliant in other ways as well. I recommend making an initiative to do a sweep of the code to bring it into compliance. Towards that initiative, I've found enabling warnings and addressing them to be invaluable. > Thank you very much and I am looking forward to here from you. You are very welcome. Sincerely, --Eljay