Hi Andrew, Thanks for reply below the reasion why we are getting the error In C, an enum is basically a way to alias names to integers.This does not lead to improved type checking. In C++, an enum defines an actual type, which results in strong type checking. In C++, an integer cannot be assigned directly to an "enum" as it could be in C. If your program contains such assignments, first cast the integer to the "enum" type, as in the following example: for example:- int i; enum X {a, b, c} e; e = i; /* Legal in C, not in C++. */ e = (enum X)i; // Legal in C++. What I want to know is how to catch an error on C code. is there any flag in gcc with we can get the same error . thanks On Tue, Jun 15, 2010 at 2:04 PM, Andrew Haley <aph@xxxxxxxxxx> wrote: > On 06/15/2010 04:56 AM, naveen yadav wrote: >> Hi all , >> >> If we compile attached c file (enum.c), build result is different >> between C & C++ compiler. >> >> example: >> [naveen@localhost ~]$ gcc enum.c >> [naveen@localhost ~]$ g++ enum.c >> enum.c: In function āint main()ā: >> enum.c:13: error: cannot convert ātypeBā to ātypeAā in assignment >> [naveen@localhost ~]$ > > C++ has stronger type checking. You need > > a= (typeA)B2; > > Andrew. >