C Compilers Reference

1 Introduction

What's in this Reference?
Where to Look for Related Information
Read the Release Notes!
What's New
CodeWarrior Year 2000 Compliance
Conventions Used in This Reference

2 Using C/C++ in the CodeWarrior IDE

C/C++ Language Panel
C/C++ Warnings Panel

3 C Compiler

C Compiler Overview
Identifiers
Header Files
Prefix Files
Sizeof() Operator
Volatile Variables
Enumerated Types
Extensions to ANSI/ISO C
ANSI Strict
Using the wchar_t Type
C++ Style Comments
Unnamed Arguments in Function Definitions
A # not Followed by Argument in a Macro
Using an Identifier After #endif
Using Typecasted Pointers as lvalues
Declaring Variables By Address
ANSI Keywords Only
Expand Trigraphs
Character Constants as Integer Values
Inlining
Multibyte Strings and Comments
Pool Strings
Reusing Strings
Require Function Prototypes
Map Newlines to CR
Relaxed Pointer Type Rules
Use Unsigned Chars
Using 64-bit Integers
Converting Pointers to Types of the Same Size
Getting Alignment and Type Information at Compile-Time
Arrays of Zero Length in Structures
Intrinsic Functions for Bit Rotation
The "D" Constant Suffix
The short double Data Type
The __typeof__() and typeof() operators
Initialization of Local Arrays and Structures
Ranges in case statements
The __FUNCTION__ Predefined Identifier

4 C++ Compiler

C++ Compiler Overview
CodeWarrior Implementation of C++
Implicit Return Statement for main()
Keyword Ordering
Additional Keywords
Conversions in the Conditional Operator
Default Arguments in Member Functions
Local Class Declarations with Inline Functions
Copying and Constructing Class Objects
Checking for Resources To Initialize Static Data
Calling an Inherited Member Function
Unsupported Extensions
Extensions to ANSI/ISO Standard C++
The __PRETTY_FUNCTION__ Predefined Identifier
Controlling the C++ Compiler
Using the C++ Compiler Always
Controlling ARM Conformance
Controlling Exception Handling
Controlling RTTI
Using the bool Type
Controlling C++ Extensions
Working With C++ Exceptions
Working With RTTI
Using the dynamic_cast Operator
Using the typeid Operator
Working With Templates
Declaring and Defining Templates
Instantiating a Template

5 C++ and Embedded Systems

C++ and Embedded Systems Overview
Activating EC++
Differences Between ANSI/ISO C++ and EC++
Templates
Libraries
File Operations
Localization
Exception Handling
Other Language Features
Meeting EC++ Specifications With CodeWarrior
Language Related Issues
Library Related Issues
Strategies for Smaller Code Size in C++
Size Optimizations
Inlining
Virtual Functions
Runtime Type Identification
Exception Handling
Operator New
Multiple Inheritance
Virtual Inheritance
Stream-Based Classes
Alternative Class Libraries

6 Preventing Errors & Bugs

CodeWarrior C/C++ Errors and Warnings
Treating All Warnings as Errors
Catching Illegal Pragmas
Catching Empty Declarations
Avoid Unintentional Errors
Finding Unused Variables
Finding Unused Arguments
Ignoring Extra Commas
Suspicious Assignments to Enumerations and Incorrect Function Returns
Finding Hidden Virtual Functions
Finding Implicit Arithmetic Conversions
Finding inline Functions That Are Not Inlined
Catching Mixed Use of `class' and `struct' Keywords
Catching Redundant Statements
Finding Realigned Data Structures
Finding Ignored Function Results

7 Predefined Symbols

ANSI Predefined Symbols
Metrowerks Predefined Symbols
Checking Options

8 Pragmas

Pragmas Overview
Pragma Syntax
Pragma Scope
Pragmas
a6frames
align
align_array_members
altivec_codegen
altivec_model
altivec_vrsave
always_inline
ANSI_strict
arg_dep_lookup
ARM_conform
auto_inline
bool
check_header_flags
code_seg
code68020
code68881
codeColdFire
const_multiply
cplusplus
cpp_extensions
d0_pointers
data_seg
def_inherited
defer_codegen
define_section
direct_destruction
direct_to_som
disable_registers
dollar_identifiers
dont_inline
dont_reuse_strings
ecplusplus
EIPC_EIPSW
enumsalwaysint
exceptions
export
extended_errorcheck
far_code, near_code, smart_code
far_data
far_strings
far_vtables
faster_pch_gen
float_constants
force_active
fourbyteints
fp_contract
fp_pilot_traps
fullpath_prepdump
function
function_align
gcc_extensions
global_optimizer
IEEEdoubles
ignore_oldstyle
import
init_seg
inline_bottom_up
inline_depth
inline_intrinsics
internal
interrupt
interrupt_fast
k63d
k63d_calls
lib_export
line_prepdump
longlong
longlong_enums
longlong_prepval
macsbug
mark
message
microsoft_exceptions
microsoft_RTTI
mmx
mmx_call
mpwc
mpwc_newline
mpwc_relax
no_register_coloring
no_static_dtors
once
only_std_keywords
opt_common_subs
opt_dead_assignments
opt_dead_code
opt_lifetimes
opt_loop_invariants
opt_propagation
opt_strength_reduction
opt_strength_reduction_strict
opt_unroll_loops
opt_vectorize_loops
optimization_level
optimize_for_size
oldstyle_symbols
pack
parameter
pcrelstrings
peephole
ppc_unroll_factor_limit
ppc_unroll_instructions_limit
ppc_unroll_speculative
pointers_in_A0, pointers_in_D0
pool_data
pool_strings
pop, push
precompile_target
profile
readonly_strings
register_coloring
require_prototypes
RTTI
schedule
scheduling
SDS_debug_support
section
segment
side_effects
simple_prepdump
SOM-Call-Optimization
SOMCallStyle
SOMCheckEnvironment
SOMClassVersion
SOMMetaClass
SOMReleaseOrder
stack_cleanup
static_inlines
suppress_init_code
supress_warnings
sym
syspath_once
toc_data
trigraphs
traceback
unsigned_char
unused
use_fp_instructions
use_frame
use_mask_registers
warn_emptydecl
warning_errors
warn_extracomma
warn_hidevirtual
warn_illegal_instructions
warn_illpragma
warn_implicitconv
warn_no_side_effect
warn_notinlined
warn_padding
warn_possunwant
warn_resultnotused
warn_structclass
warn_unusedarg
warn_unusedvar
warning
wchar_type

Index



Visit the Metrowerks website at: http://www.metrowerks.com
For assistance contact Metrowerks Technical Support at: cw_support@metrowerks.com
Copyright © 2000, Metrowerks Corp. All rights reserved.

Last updated: August 17, 2000