Although C++ is designed to have backward compatibility with C there can be many C programs that would produce compiler error when compiled with a C++ compiler. Following are some of them.
1) In C++, it is a compiler error to call a function before it is declared. But in C, it may compile (See https://www.geeksforgeeks.org/g-fact-95/)
2) In C++, it is compiler error to make a normal pointer to point a const variable, but it is allowed in C. (See Const Qualifier in C)
3) In C, a void pointer can directly be assigned to some other pointer like int *, char *. But in C++, a void pointer must be explicitly typcasted.
This is something we notice when we use malloc(). Return type of malloc() is void *. In C++, we must explicitly typecast return value of malloc() to appropriate type, e.g., “int *p = (int *)malloc(sizeof(int))”. In C, typecasting is not necessary.
4) Following program compiles & runs fine in C, but fails in compilation in C++. const variable in C++ must be initialized but in c it isn’t necessary. Thanks to Pravasi Meet for suggesting this point.
Line 4 [Error] uninitialized const 'a' [-fpermissive]
5) This is the worst answer among all, but still a valid answer. We can use one of the C++ specific keywords as variable names. The program won’t compile in C++, but would compiler in C.
Similarly, we can use other keywords like delete, explicit, class, .. etc.
6) C++ does more strict type checking than C. For example the following program compiles in C, but not in C++. In C++, we get compiler error “invalid conversion from ‘int’ to ‘char*'”. Thanks to Pravasi Meet for adding this point.
7) A C/C++ Function Call Puzzle
This article is contributed by Abhay Rathi. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
- Undefined Behavior in C and C++
- Difference between C structures and C++ structures
- A C/C++ Function Call Puzzle
- Basic Concepts of Object Oriented Programming using C++
- Commonly Asked C++ Interview Questions | Set 1
- Virtual Functions and Runtime Polymorphism in C++ | Set 1 (Introduction)
- Write a program that produces different results in C and C++
- Commonly Asked C Programming Interview Questions | Set 1
- Name Mangling and extern "C" in C++
- What happens when a function is called before its declaration in C?
- References in C++
- Const Qualifier in C
- Type difference of character literals in C and C++
- "delete this" in C++
- How does "void *" differ in C and C++?
Improved By : Sreedhar25