C H A P T E R 5 |
Moving From C to C++ |
This chapter describes how to move programs from C to C++.
C programs generally require little modification to compile as C++ programs. C and C++ are link compatible. You do not have to modify compiled C code to link it with C++ code. See Commercially Available Books for a list of books on the C++ language.
TABLE 5-1 shows all reserved keywords in C++ and C, plus keywords that are predefined by C++. Keywords that are reserved in C++ but not in C are shown in boldface.
_ _STDC_ _ is predefined to the value 0. For example:
#include <stdio.h> main() { #ifdef _ _STDC_ _ printf("yes\n"); #else printf("no\n"); #endif #if _ _STDC_ _ ==0 printf("yes\n"); #else printf("no\n"); #endif } |
The following table lists reserved words for alternate representations of certain operators and punctuators specified in the C++ standard.
K&R C, ANSI C, and C++ require different header files. To make C++ header files conform to K&R C and ANSI C standards so that they are generic, use the macro _ _cplusplus to separate C++ code from C code. The macro _ _STDC_ _ is defined in both ANSI C and C++. Use this macro to separate C++ or ANSI C code from K&R C code. For more information, see the C++ Programming Guide.
Note - Early C++ compilers pre-defined the macro c_plusplus, which is no longer supported. Use __cplusplus instead. |
The compiler encodes C++ function names to allow overloading. To call a C function, or a C++ function "masquerading" as a C function, you must prevent this encoding. Do so by using the extern "C" declaration. For example:
This linkage specification does not affect the semantics of the program using sqrt(), but simply causes the compiler to use the C naming conventions for sqrt().
Only one of a set of overloaded C++ functions can have C linkage. You can use C linkage for C++ functions that you intend to call from a C program, but you would only be able to use one instance of that function.
You cannot specify C linkage inside a function definition. Such declarations can only be done at the global scope.
If an inline function definition is in source code that can be compiled by both the C compiler and the C++ compiler, then the function must comply with the following restrictions.
Copyright © 2005, Sun Microsystems, Inc. All Rights Reserved.