There is a standard that all compilers must abide by called the ANSI standard. This standard changes fairly regularly and with it changes syntax and other programming rules. Depending on how old the compiler is, it may or may not contain the correct, up to date rules that you know. Also, with non ANSI headers, such as conio.h, different companies (Borland, GNU, etc) will have different looking headers. This is why code may not compile on all compilers. As a standard, you should attempt to write your code as standard as you can so that non much has to be changed.