Programming C++  «Prev  Next»
Lesson 4Similarities in C and C++ program structure
ObjectiveExamine similarities between C/C++ program Structure.

Similarities between C and C++ Programs

C++ supports Object-oriented programming and C does not

One of the most commonly known differences between the two programming languages is that C++ supports OOP and C does not. C was originally built to be a procedural programming language and it is not practical to implement (OOP) object-oriented programming in C. C++ supports multiple programming paradigms and multiple inheritance and OOP is one of the programming paradigms. For example, C++'s parameterized templates allow for generic programming. C++ has a few characteristics of functional programming (in the form of function pointers). Furthermore, you can assume that any C++ feature relating to classes does not exist in C, including concepts like
  1. friends and
  2. virtual functions.
One can summarize the differences between the languages through the following statement:
C++ has better support for multiple programming paradigms when compared to C.

C++ is a superset of C
C++ is a superset of C and any C++ feature relating to classes does not exist in C.

Difference between Classic C and C99

Question: For the C programming language, is Classic C the same as C99? "Classic C" generally refers to the C programming language as it was originally defined and standardized in 1989 by ANSI, known as C89 or ANSI C. This version of C was the first standardized version of the language and forms the base for many later developments and extensions of C. It introduced several core features of the language including function prototypes, standard input and output library, and improved type safety.
C99, on the other hand, is the version of the C language standardized by ISO in 1999. It introduced several new features and improvements over C89, addressing many criticisms and shortcomings of the original standard. Among the changes are:
  1. Inline functions: C99 added the inline keyword to suggest that the compiler insert a function's code in place of calls to the function, thereby increasing efficiency at the possible cost of program size.
  2. Variable-length arrays (VLAs): C99 introduced VLAs, allowing arrays to be declared with a length determined at runtime.
  3. Improved support for floating-point and complex numbers: C99 introduced several new functions and types for dealing with floating-point and complex numbers.
  4. New library functions: C99 added several new functions to the C standard library, especially in the areas of mathematics and string manipulation.
  5. Single-line comments: While many compilers supported single-line comments using the // syntax as an extension to C89, C99 officially added support for this feature.
  6. Long long integer type: C99 introduced a new integer type, long long int, designed to hold larger integers than could be stored in a long int.

The C99 standard is not entirely backward compatible with C89. That is, not all programs written in C89 can be compiled and run as expected under a C99-compliant compiler, and vice versa. Programmers must often choose whether to write code that is specific to C89, C99, or later versions, based on the requirements of their projects and the capabilities of their tools.

C/C++ Compatibility

With minor exceptions, C++ is a superset of C and most differences stem from the fact that C++ has greater emphasis on type checking. Well-written C programs tend to be C++ programs as well and a compiler can diagnose every difference between C++ and C. Most C code is Classic C or C99.

C and C++ Are Siblings

Classic C has two main descendants:
  1. ISO C and
  2. ISO C++.
Over the years, these languages have evolved at different paces and in different directions. One result of this is that each language provides support for traditional C-style programming in slightly different ways. The resulting incompatibilities can make life challenging for people who use both C and C++:
  1. For people who write in one language using libraries implemented in the other,
  2. and for implementers of libraries and tools for C and C++.

As you have seen in the last several lessons, the organization of a C++ program is very similar to the organization of a C program.
  1. C++ relies on an external standard library to provide input/output. The information the program needs to use this library resides in the library file iostream.h.
  2. C++ uses a preprocessor to handle a set of directives, such as the include directive, to convert the program from its preprocessing form to pure C++ syntax. These directives are introduced by the symbol #.
  3. The function main() is used as the starting point for execution of the program. It obeys the C++ rules for function declaration. The function main() implicitly returns zero, indicating normal termination. Other return values would indicate an error condition.

What are the major differences between C++ 14 and C++ 17?

C++ is a popular programming language that is widely used for developing high-performance applications. The latest versions of C++ are C++14 and C++17, which introduced several new features and improvements over previous versions of the language. Here are some of the major differences between C++14 and C++17:
  1. Structured Bindings: C++17 introduced the ability to create structured bindings, which allow multiple variables to be bound to the components of a structured type such as a tuple or a struct. This feature makes it easier to work with structured data types and can simplify code.
  2. constexpr if: C++17 introduced the ability to use if statements in constexpr contexts, which allows for more flexible and expressive compile-time computations. This feature makes it easier to write complex code that can be evaluated at compile-time, improving performance and reducing code complexity.
  3. Inline variables: C++17 introduced the ability to define variables as inline, which can improve performance by reducing the overhead of function calls. This feature also simplifies code and can make it easier to work with certain data structures.
  4. UTF-8 character literals: C++17 introduced support for UTF-8 character literals, making it easier to work with Unicode characters and improving internationalization support.
  5. Fold expressions: C++17 introduced the ability to use fold expressions, which allow variadic templates to be expanded into a single expression. This feature simplifies code and can improve performance in some cases.
  6. std::byte: C++17 introduced a new type called std::byte, which provides a standard way to represent byte values in C++. This feature can improve portability and make it easier to work with low-level data.

These are just a few of the major differences between C++14 and C++17. Overall, C++17 introduced several new features and improvements that make the language more powerful, expressive, and efficient, and it's widely used by developers and organizations for high-performance and demanding applications.