Moving From C to C++ |
7 |
![]() |
C programs generally require little modification to compile as C++ programs. C and C++ are link compatible. You don't have to modify compiled C code to link it with C++ code.
See The C++ Programming Language, by Margaret A. Ellis and Bjarne Stroustrup, for more specific information on the C++ language.
__STDC__ is predefined to the value 0. For example:
Code Example 7-1 Predefines |
#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
}
yes yes |
The following table lists reserved words for alternate representations of certain operators and punctuators specified in the current ANSI/ISO working paper from the ISO C++ Standards Committee. These alternate representations have not yet been implemented in the C++ compiler, but in future releases may be adopted as reserved words and should not be otherwise used.
and |
bitor |
not |
or |
xor |
and_eq |
compl |
not_eq |
or_eq |
xor_eq |
bitand |
|
|
|
|
Data Types
The basic (Solaris) C and C++ datatypes and their sizes are: (The size of each numeric type may vary among vendors.)
You can insert an #ifdef statement in your code to conditionally compile C++ or C using the C++ compiler. To do this, use the __cplusplus macro:
#ifdef __cplusplus int printf(char*,...);// C++ declaration #else int printf();/* C declaration */ #endif |
Note - In the past, this macro was c_plusplus, which is no longer accepted.
Linking to C Functions
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:
extern "C" { double sqrt(double); //sqrt(double) has C linkage } |
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().