Documentation Home
> Sun Studio 12 Update 1: C User's Guide
Sun Studio 12 Update 1: C User's Guide
Book Information
Index
Numbers and Symbols
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Preface
Chapter 1 Introduction to the C Compiler
1.1 What's New in Version 5.10 Sun Studio 12 Update 1 Release
1.2 Special x86 Notes
1.3 Binary Compatibility Verification
1.4 Compiling for 64–Bit Platforms
1.5 Standards Conformance
1.6 C Readme File
1.7 Man Pages
1.8 Organization of the Compiler
1.9 C-Related Programming Tools
Chapter 2 C-Compiler Information Specific to Sun’s Implementation
2.1 Constants
2.1.1 Integral Constants
2.1.2 Character Constants
2.2 Linker Scoping Specifiers
2.3 Thread Local Storage Specifier
2.4 Floating Point, Nonstandard Mode
2.5 Labels as Values
2.6 long long Data Type
2.6.1 Printing long long Data Types
2.6.2 Usual Arithmetic Conversions
2.7 Case Ranges in Switch Statements
2.8 Assertions
2.9 Pragmas
2.9.1 align
2.9.2 c99
2.9.3 does_not_read_global_data
2.9.4 does_not_return
2.9.5 does_not_write_global_data
2.9.6 error_messages
2.9.7 fini
2.9.8 hdrstop
2.9.9 ident
2.9.10 init
2.9.11 inline
2.9.12 int_to_unsigned
2.9.13 MP serial_loop
2.9.14 MP serial_loop_nested
2.9.15 MP taskloop
2.9.16 nomemorydepend
2.9.17 no_side_effect
2.9.18 opt
2.9.19 pack
2.9.20 pipeloop
2.9.21 rarely_called
2.9.22 redefine_extname
2.9.23 returns_new_memory
2.9.24 unknown_control_flow
2.9.25 unroll
2.9.26 warn_missing_parameter_info
2.9.27 weak
2.10 Predefined Names
2.11 The Value of errno
2.12 Extensions
2.12.1 _Restrict Keyword
2.12.2 __asm Keyword
2.12.3 __inline and __inline__
2.12.4 __builtin_constant_p()
2.12.5 __FUNCTION__ and __PRETTY_FUNCTION__
2.13 Environment Variables
2.13.1 OMP_DYNAMIC
2.13.2 OMP_NESTED
2.13.3 OMP_NUM_THREADS
2.13.4 OMP_SCHEDULE
2.13.5 PARALLEL
2.13.6 SUN_PROFDATA
2.13.7 SUN_PROFDATA_DIR
2.13.8 SUNW_MP_THR_IDLE
2.13.9 TMPDIR
2.14 How to Specify Include Files
2.14.1 Using the -I- Option to Change the Search Algorithm
2.14.1.1 Warnings
Chapter 3 Parallelizing C Code
3.1 Overview
3.1.1 Example of Use
3.2 Parallelizing for OpenMP
3.2.1 Handling OpenMP Runtime Warnings
3.3 Environment Variables
3.3.1 PARALLEL or OMP_NUM_THREADS
3.3.1.1 SUNW_MP_THR_IDLE
SUNW_MP_WARN
STACKSIZE
3.3.1.2 Keyword
3.4 Data Dependence and Interference
3.4.1 Parallel Execution Model
3.4.2 Private Scalars and Private Arrays
3.4.3 Storeback
3.4.4 Reduction Variables
3.5 Speedups
3.5.1 Amdahl’s Law
3.5.1.1 Overheads
3.5.1.2 Gustafson’s Law
3.6 Load Balance and Loop Scheduling
3.6.1 Static or Chunk Scheduling
3.6.2 Self Scheduling
3.6.3 Guided Self Scheduling
3.7 Loop Transformations
3.7.1 Loop Distribution
3.7.2 Loop Fusion
3.7.3 Loop Interchange
3.8 Aliasing and Parallelization
3.8.1 Array and Pointer References
3.8.2 Restricted Pointers
3.8.3 Explicit Parallelization and Pragmas
3.8.3.1 Serial Pragmas
3.8.3.2 Parallel Pragma
Nesting of for Loops
Eligibility for Parallelizing
Number of Processors
Classifying Variables
Default Scoping Rules for private and shared Variables
private Variables
shared Variables
readonly Variables
storeback Variables
savelast
reduction Variables
Scheduling Control
Chapter 4 lint Source Code Checker
4.1 Basic and Enhanced lint Modes
4.2 Using lint
4.3 The lint Options
4.3.1 -#
4.3.2 -###
4.3.3 -a
4.3.4 -b
4.3.5 -C filename
4.3.6 -c
4.3.7 -dirout=dir
4.3.8 -err=warn
4.3.9 -errchk=l(, l)
4.3.10 -errfmt=f
4.3.11 -errhdr=h
4.3.12 -erroff=tag(, tag)
4.3.13 -errsecurity=v
4.3.14 -errtags=a
4.3.15 -errwarn=t
4.3.16 -F
4.3.17 -fd
4.3.18 -flagsrc=file
4.3.19 -h
4.3.20 -Idir
4.3.21 -k
4.3.22 -Ldir
4.3.23 -lx
4.3.24 -m
4.3.25 -m32|-m64
4.3.26 -Ncheck=c
4.3.27 -Nlevel=n
4.3.27.1 -Nlevel=1
4.3.27.2 -Nlevel=2
4.3.27.3 -Nlevel=3
4.3.27.4 -Nlevel=4
4.3.28 -n
4.3.29 -ox
4.3.30 -p
4.3.31 -Rfile
4.3.32 -s
4.3.33 -u
4.3.34 -V
4.3.35 -v
4.3.36 -Wfile
4.3.37 -XCC=a
4.3.38 -Xalias_level[=l]
4.3.39 -Xarch=amd64
4.3.40 -Xarch=v9
4.3.41 -Xc99[=o]
4.3.42 -Xexplicitpar=a
4.3.43 -Xkeeptmp=a
4.3.44 -Xtemp=dir
4.3.45 -Xtime=a
4.3.46 -Xtransition=a
4.3.47 -Xustr={ascii_utf16_ushort|no}
4.3.48 -x
4.3.49 -y
4.4 lint Messages
4.4.1 Options to Suppress Messages
4.4.2 lint Message Formats
4.5 lint Directives
4.5.1 Predefined Values
4.5.2 Directives
4.6 lint Reference and Examples
4.6.1 Diagnostics Performed by lint
4.6.1.1 Consistency Checks
4.6.1.2 Portability Checks
4.6.1.3 Questionable Constructs
4.6.2 lint Libraries
4.6.3 lint Filters
Chapter 5 Type-Based Alias Analysis
5.1 Introduction to Type-Based Analysis
5.2 Using Pragmas for Finer Control
5.2.1 #pragma alias_level level (list)
5.2.1.1 #pragma alias (type, type [, type]…)
5.2.1.2 #pragma alias (pointer, pointer [, pointer]…)
5.2.1.3 #pragma may_point_to (pointer, variable [, variable]…)
5.2.1.4 #pragma noalias (type, type [, type]…)
5.2.1.5 #pragma noalias (pointer, pointer [, pointer]…)
5.2.1.6 #pragma may_not_point_to (pointer, variable [, variable]…)
5.3 Checking With lint
5.3.1 Struct Pointer Cast of Scalar Pointer
5.3.2 Struct Pointer Cast of Void Pointer
5.3.3 Cast of Struct Field to Structure Pointer
5.3.4 Explicit Aliasing Required
5.4 Examples of Memory Reference Constraints
Chapter 6 Transitioning to ISO C
6.1 Basic Modes
6.1.1 -Xc
6.1.2 -Xa
6.1.3 -Xt
6.1.4 -Xs
6.2 A Mixture of Old- and New-Style Functions
6.2.1 Writing New Code
6.2.2 Updating Existing Code
6.2.3 Mixing Considerations
6.3 Functions With Varying Arguments
6.4 Promotions: Unsigned Versus Value Preserving
6.4.1 Background
6.4.2 Compilation Behavior
6.4.3 First Example: The Use of a Cast
6.4.4 Bit-fields
6.4.5 Second Example: Same Result
6.4.6 Integral Constants
6.4.7 Third Example: Integral Constants
6.5 Tokenization and Preprocessing
6.5.1 ISO C Translation Phases
6.5.2 Old C Translation Phases
6.5.3 Logical Source Lines
6.5.4 Macro Replacement
6.5.5 Using Strings
6.5.6 Token Pasting
6.6 const and volatile
6.6.1 Types, Only for lvalue
6.6.2 Type Qualifiers in Derived Types
6.6.3 const Means readonly
6.6.4 Examples of const Usage
6.6.5 volatile Means Exact Semantics
6.6.6 Examples of volatile Usage
6.7 Multibyte Characters and Wide Characters
6.7.1 Asian Languages Require Multibyte Characters
6.7.2 Encoding Variations
6.7.3 Wide Characters
6.7.4 Conversion Functions
6.7.5 C Language Features
6.8 Standard Headers and Reserved Names
6.8.1 Standard Headers
6.8.2 Names Reserved for Implementation Use
6.8.3 Names Reserved for Expansion
6.8.4 Names Safe to Use
6.9 Internationalization
6.9.1 Locales
6.9.2 The setlocale() Function
6.9.3 Changed Functions
6.9.4 New Functions
6.10 Grouping and Evaluation in Expressions
6.10.1 Definitions
6.10.2 The K&R C Rearrangement License
6.10.3 The ISO C Rules
6.10.4 The Parentheses
6.10.5 The As If Rule
6.11 Incomplete Types
6.11.1 Types
6.11.2 Completing Incomplete Types
6.11.3 Declarations
6.11.4 Expressions
6.11.5 Justification
6.11.6 Examples
6.12 Compatible and Composite Types
6.12.1 Multiple Declarations
6.12.2 Separate Compilation Compatibility
6.12.3 Single Compilation Compatibility
6.12.4 Compatible Pointer Types
6.12.5 Compatible Array Types
6.12.6 Compatible Function Types
6.12.7 Special Cases
6.12.8 Composite Types
Chapter 7 Converting Applications for a 64-Bit Environment
7.1 Overview of the Data Model Differences
7.2 Implementing Single Source Code
7.2.1 Derived Types
7.2.1.1 <sys/types.h>
7.2.1.2 <inttypes.h>
Fixed-Width Integer Types
Helpful Types Such as unintptr_t
Constant Macros
Limits
Format String Macros
7.2.2 Tools
7.2.2.1 lint
7.3 Converting to the LP64 Data Type Model
7.3.1 Integer and Pointer Size Change
7.3.2 Integer and Long Size Change
7.3.3 Sign Extension
7.3.4 Pointer Arithmetic Instead of Integers
7.3.5 Structures
7.3.6 Unions
7.3.7 Type Constants
7.3.8 Beware of Implicit Declarations
7.3.9 sizeof( ) Is an Unsigned long
7.3.10 Use Casts to Show Your Intentions
7.3.11 Check Format String Conversion Operation
7.4 Other Considerations
7.4.1 Derived Types That Have Grown in Size
7.4.2 Check for Side Effects of Changes
7.4.3 Check Whether Literal Uses of long Still Make Sense
7.4.4 Use #ifdef for Explicit 32-bit Versus 64-bit Prototypes
7.4.5 Calling Convention Changes
7.4.6 Algorithm Changes
7.5 Checklist for Getting Started
Chapter 8 cscope: Interactively Examining a C Program
8.1 The cscope Process
8.2 Basic Use
8.2.1 Step 1: Set Up the Environment
8.2.2 Step 2: Invoke the cscope Program
8.2.3 Step 3: Locate the Code
8.2.4 Step 4: Edit the Code
8.2.5 Command-Line Options
8.2.6 View Paths
8.2.7 cscope and Editor Call Stacks
8.2.8 Examples
8.2.8.1 Changing a Constant to a Preprocessor Symbol
8.2.8.2 Adding an Argument to a Function
8.2.8.3 Changing the Value of a Variable
8.2.9 Command-Line Syntax for Editors
8.3 Unknown Terminal Type Error
Appendix A Compiler Options Grouped by Functionality
A.1 Options Summarized by Function
A.1.1 Optimization and Performance Options
A.1.2 Compile-Time and Link-Time Options
A.1.3 Data-Alignment Options
A.1.4 Numerics and Floating Point Options
A.1.5 Parallelization Options
A.1.6 Source-Code Options
A.1.7 Compiled-Code Options
A.1.8 Compilation-Mode Options
A.1.9 Diagnostic Options
A.1.10 Debugging Options
A.1.11 Linking and Libraries Options
A.1.12 Target-Platform Options
A.1.13 x86-Specific Options
A.1.14 Licensing Options
A.1.15 Obsolete Options
Appendix B C Compiler Options Reference
B.1 Option Syntax
B.2 The cc Options
B.2.1 -#
B.2.2 -###
B.2.3 -Aname[(tokens)]
B.2.4 -B[static|dynamic]
B.2.5 -C
B.2.6 -c
B.2.7 -Dname[(arg[,arg])][=expansion]
B.2.8 -d[y|n]
B.2.9 -dalign
B.2.10 -E
B.2.11 -errfmt[=[no%]error]
B.2.12 -errhdr[=h]
B.2.13 -erroff[=t]
B.2.14 -errshort[=i]
B.2.15 -errtags[=a]
B.2.16 -errwarn[=t]
B.2.17 -fast
B.2.18 -fd
B.2.19 -features=[v]
B.2.20 -flags
B.2.21 -flteval[={any|2}]
B.2.22 -fma[={none|fused}]
B.2.23 -fnonstd
B.2.24 -fns[={no|yes}]
B.2.25 -fPIC
B.2.26 -fpic
B.2.27 -fprecision=p
B.2.28 -fround=r
B.2.29 -fsimple[=n]
B.2.30 -fsingle
B.2.31 -fstore
B.2.32 -ftrap=t[,t...]
B.2.33 -G
B.2.34 -g
B.2.35 -H
B.2.36 -h name
B.2.37 -I[-|dir]
B.2.38 -i
B.2.39 -include filename
B.2.40 -KPIC
B.2.41 -Kpic
B.2.42 -keeptmp
B.2.43 -Ldir
B.2.44 -lname
B.2.45 -m32|-m64
B.2.46 -mc
B.2.47 -misalign
B.2.48 -misalign2
B.2.49 -mr[,string]
B.2.50 -mt
B.2.50.1 See Also
B.2.51 -native
B.2.52 -nofstore
B.2.53 -O
B.2.54 -o filename
B.2.55 -P
B.2.56 -p
B.2.57 -Q[y|n]
B.2.58 -qp
B.2.59 -Rdir[:dir]
B.2.60 -S
B.2.61 -s
B.2.62 -Uname
B.2.63 -V
B.2.64 -v
B.2.65 -Wc,arg
B.2.66 -w
B.2.67 -X[c|a|t|s]
B.2.68 -x386
B.2.69 -x486
B.2.70 -xa
B.2.71 -xaddr32[=yes|no]
B.2.72 -xalias_level[=l]
B.2.73 -xannotate[=yes|no]
B.2.74 -xarch=isa
B.2.74.1 -xarch Flags for SPARC
B.2.74.2 -xarch Flags for x86
Special x86 Notes
Binary Compatibility Verification
B.2.74.3 The SPARC Default
B.2.75 -xautopar
B.2.76 -xbinopt={prepare|off}
B.2.77 -xbuiltin[=(%all|%none)]
B.2.78 -xCC
B.2.79 -xc99[=o]
B.2.80 -xcache[=c]
B.2.81 –xcg[89|92]
B.2.82 -xchar[=o]
B.2.83 -xchar_byte_order[=o]
B.2.84 -xcheck[=o]
B.2.85 -xchip[=c]
B.2.86 -xcode[=v]
B.2.87 -xcrossfile
B.2.88 -xcsi
B.2.89 -xdebugformat=[stabs|dwarf]
B.2.90 -xdepend=[yes|no]
B.2.91 -xdryrun
B.2.92 -xe
B.2.93 -xexplicitpar
B.2.94 -xF[=v[,v...]]
B.2.94.1 Values
B.2.95 -xhelp=f
B.2.96 -xhwcprof
B.2.97 -xinline=list
B.2.98 -xinstrument=[no%]datarace
B.2.99 -xipo[=a]
B.2.99.1 Examples
B.2.99.2 When Not To Use -xipo=2 Interprocedural Analysis
B.2.100 -xipo_archive=[a]
B.2.101 -xjobs=n
B.2.102 -xldscope={v}
B.2.103 -xlibmieee
B.2.104 -xlibmil
B.2.105 -xlibmopt
B.2.106 -xlic_lib=sunperf
B.2.107 -xlicinfo
B.2.108 -xlinkopt[=level]
B.2.109 -xloopinfo
B.2.110 -xM
B.2.111 -xM1
B.2.112 -xMD
B.2.113 -xMF filename
B.2.114 -xMMD
B.2.115 -xMerge
B.2.116 -xmaxopt[=v]
B.2.117 -xmemalign=ab
B.2.118 -xmodel=[a]
B.2.119 -xnolib
B.2.120 -xnolibmil
B.2.121 -xnolibmopt
B.2.122 -xnorunpath
B.2.123 -xO[1|2|3|4|5]
B.2.123.1 Explanation of SPARC Optimizations
B.2.123.2 Explanation of x86 Optimizations
B.2.124 -xopenmp[=i]
B.2.125 -xP
B.2.126 -xpagesize=n
B.2.127 -xpagesize_heap=n
B.2.128 -xpagesize_stack=n
B.2.129 -xparallel
B.2.130 -xpch=v
B.2.130.1 Creating a Precompiled-Header File Automatically
B.2.130.2 Creating a Precompiled-Header File Manually
B.2.130.3 How the Compiler Handles an Existing Precompiled-Header File
B.2.130.4 Directing the Compiler to Use a Specific Precompiled-Header File
B.2.130.5 The Viable Prefix
B.2.130.6 Screening a Header File for Problems
B.2.130.7 The Precompiled-Header File Cache
B.2.130.8 Warnings
B.2.130.9 Precompiled-Header File Dependencies and make Files
B.2.131 -xpchstop=[file|<include>]
B.2.132 -xpec[={yes|no}]
B.2.133 -xpentium
B.2.134 -xpg
B.2.135 -xprefetch[=val[,val]]
B.2.135.1 Prefetch Latency Ratio
B.2.136 -xprefetch_auto_type=a
B.2.137 -xprefetch_level=l
B.2.138 -xprofile=p
B.2.139 -xprofile_ircache[=path]
B.2.140 -xprofile_pathmap
B.2.141 -xreduction
B.2.142 -xregs=r[,r…]
B.2.143 -xrestrict[=f]
B.2.144 -xs
B.2.145 -xsafe=mem
B.2.146 -xsb
B.2.147 -xsbfast
B.2.148 -xsfpconst
B.2.149 -xspace
B.2.150 -xstrconst
B.2.151 -xtarget=t
B.2.151.1 -xtarget Values on SPARC Platforms
B.2.151.2 -xtarget Values on x86 Platforms
B.2.152 -xtemp=dir
B.2.153 -xthreadvar[=o]
B.2.154 -xtime
B.2.155 -xtransition
B.2.156 -xtrigraphs
B.2.157 -xunroll=n
B.2.158 -xustr={ascii_utf16_ushort|no}
B.2.159 -xvector[=a]
B.2.160 -xvis
B.2.161 -xvpara
B.2.162 -Yc, dir
B.2.163 -YA, dir
B.2.164 -YI, dir
B.2.165 -YP, dir
B.2.166 -YS, dir
B.2.167 -Zll
B.3 Options Passed to the Linker
Appendix C Implementation-Defined ISO/IEC C99 Behavior
C.1 Implementation-defined Behavior (J.3 )
C.1.1 Translation (J.3.1 )
C.1.2 Environment (J.3.2)
C.1.3 Identifiers (J.3.3)
C.1.4 Characters (J.3.4)
C.1.5 Integers (J.3.5)
C.1.6 Floating point (J.3.6)
C.1.7 Arrays and Pointers (J.3.7)
C.1.8 Hints (J.3.8)
C.1.9 Structures, Unions, Enumerations, and Bit-fields (J.3.9)
C.1.10 Qualifiers (J.3.10)
C.1.11 Preprocessing Directives (J.3.11)
C.1.12 Library Functions (J.3.12)
C.1.13 Architecture (J.3.13)
C.1.14 Locale-specific Behavior (J.4)
Appendix D Supported Features of C99
D.1 Discussion and Examples
D.1.1 Precision of Floating Point Evaluators
D.1.2 C99 Keywords
D.1.2.1 Using the restrict Keyword
D.1.3 __func__ Support
D.1.4 Universal Character Names (UCN)
D.1.5 Commenting Code With //
D.1.6 Disallowed Implicit int and Implicit Function Declarations
D.1.7 Declarations Using Implicit int
D.1.8 Flexible Array Members
D.1.9 Idempotent Qualifiers
D.1.10 inline Functions
D.1.10.1 Sun C compiler gcc compatibility for inline functions
D.1.11 Static and Other Type Qualifiers Allowed in Array Declarators
D.1.12 Variable Length Arrays (VLA):
D.1.13 Designated Initializers
D.1.14 Mixed Declarations and Code
D.1.15 Declaration in for-Loop Statement
D.1.16 Macros With a Variable Number of Arguments
D.1.17 _Pragma
Appendix E Implementation-Defined ISO/IEC C90 Behavior
E.1 Implementation Compared to the ISO Standard
E.1.1 Translation (G.3.1)
E.1.1.1 (5.1.1.3) Identification of diagnostics:
E.1.2 Environment (G.3.2)
E.1.2.1 (5.1.2.2.1) Semantics of arguments to main:
(5.1.2.3) What constitutes an interactive device:
E.1.3 Identifiers (G.3.3)
E.1.3.1 (6.1.2) The number of significant initial characters (beyond 31) in an identifier without external linkage:
(6.1.2) The number of significant initial characters (beyond 6) in an identifier with external linkage:
E.1.4 Characters (G.3.4)
E.1.4.1 (5.2.1) The members of the source and execution character sets, except as explicitly specified in the Standard:
(5.2.1.2) The shift states used for the encoding of multibyte characters:
(5.2.4.2.1) The number of bits in a character in the execution character set:
(6.1.3.4) The mapping of members of the source character set (in character and string literals) to members of the execution character set:
(6.1.3.4) The value of an integer character constant that contains a character or escape sequence not represented in the basic execution character set or the extended character set for a wide character constant:
(3.1.3.4) The value of an integer character constant that contains more than one character or a wide character constant that contains more than one multibyte character:
(6.1.3.4) The current locale used to convert multibyte characters into corresponding wide characters (codes) for a wide character constant:
(6.2.1.1) Whether a plain char has the same range of values as signed char or unsigned char:
E.1.5 Integers (G.3.5)
E.1.5.1 (6.1.2.5) The representations and sets of values of the various types of integers:
(6.2.1.2) The result of converting an integer to a shorter signed integer, or the result of converting an unsigned integer to a signed integer of equal length, if the value cannot be represented:
(6.3) The results of bitwise operations on signed integers:
(6.3.5) The sign of the remainder on integer division:
(6.3.7) The result of a right shift of a negative-valued signed integral type:
E.1.6 Floating-Point (G.3.6)
E.1.6.1 (6.1.2.5) The representations and sets of values of the various types of floating-point numbers:
(6.2.1.3) The direction of truncation when an integral number is converted to a floating-point number that cannot exactly represent the original value:
(6.2.1.4) The direction of truncation or rounding when a floating- point number is converted to a narrower floating-point number:
E.1.7 Arrays and Pointers (G.3.7)
E.1.7.1 (6.3.3.4, 7.1.1) The type of integer required to hold the maximum size of an array; that is, the type of the sizeof operator, size_t:
(6.3.4) The result of casting a pointer to an integer, or vice versa:
(6.3.6, 7.1.1) The type of integer required to hold the difference between two pointers to members of the same array, ptrdiff_t:
E.1.8 Registers (G.3.8)
E.1.8.1 (6.5.1) The extent to which objects can actually be placed in registers by use of the register storage-class specifier:
E.1.9 Structures, Unions, Enumerations, and Bit-Fields (G.3.9)
E.1.9.1 (6.3.2.3) A member of a union object is accessed using a member of a different type:
(6.5.2.1) The padding and alignment of members of structures.
(6.5.2.1) Whether a plain int bit-field is treated as a signed int bit-field or as an unsigned int bit-field:
(6.5.2.1) The order of allocation of bit-fields within an int:
(6.5.2.1) Whether a bit-field can straddle a storage-unit boundary:
(6.5.2.2) The integer type chosen to represent the values of an enumeration type:
E.1.10 Qualifiers (G.3.10)
E.1.10.1 (6.5.5.3) What constitutes an access to an object that has volatile-qualified type:
E.1.11 Declarators (G.3.11)
E.1.11.1 (6.5.4) The maximum number of declarators that may modify an arithmetic, structure, or union type:
E.1.12 Statements (G.3.12)
E.1.12.1 (6.6.4.2) The maximum number of case values in a switch statement:
E.1.13 Preprocessing Directives (G.3.13)
E.1.13.1 (6.8.1) Whether the value of a single-character character constant in a constant expression that controls conditional inclusion matches the value of the same character constant in the execution character set:
(6.8.1) Whether such a character constant may have a negative value:
(6.8.2) The method for locating includable source files:
(6.8.2) The support of quoted names for includable source files:
(6.8.2) The mapping of source file character sequences:
(6.8.6) The behavior on each recognized #pragma directive:
(6.8.8) The definitions for __DATE__ and __TIME__ when, respectively, the date and time of translation are not available:
E.1.14 Library Functions (G.3.14)
E.1.14.1 (7.1.6) The null pointer constant to which the macro NULL expands:
(7.2) The diagnostic printed by and the termination behavior of the assert function:
(7.3.1) The sets of characters tested for by the isalnum, isalpha, iscntrl, islower, isprint, and isupper functions:
(7.5.1) The values returned by the mathematics functions on domain errors:
(7.5.1) Whether the mathematics functions set the integer expression errno to the value of the macro ERANGE on underflow range errors:
(7.5.6.4) Whether a domain error occurs or zero is returned when the fmod function has a second argument of zero:
(7.7.1.1) The set of signals for the signal function:
(7.7.1.1) The default handling and the handling at program startup for each signal recognized by the signal function:
(7.7.1.1) If the equivalent of signal(sig, SIG_DFL); is not executed prior to the call of a signal handler, the blocking of the signal that is performed:
(7.7.1.1) Whether the default handling is reset if the SIGILL signal is received by a handler specified to the signal function:
(7.9.2) Whether the last line of a text stream requires a terminating new-line character:
(7.9.2) Whether space characters that are written out to a text stream immediately before a new-line character appear when read in:
(7.9.2) The number of null characters that may be appended to data written to a binary stream:
(7.9.3) Whether the file position indicator of an append mode stream is initially positioned at the beginning or end of the file:
(7.9.3) Whether a write on a text stream causes the associated file to be truncated beyond that point:
(7.9.3) The characteristics of file buffering:
(7.9.3) Whether a zero-length file actually exists:
(7.9.3) The rules for composing valid file names:
(7.9.3) Whether the same file can be open multiple times:
(7.9.4.1) The effect of the remove function on an open file:
(7.9.4.2) The effect if a file with the new name exists prior to a call to the rename function:
(7.9.6.1) The output for %p conversion in the fprintf function:
(7.9.6.2) The input for %p conversion in the fscanf function:
(7.9.6.2) The interpretation of a- character that is neither the first nor the last character in the scan list for %[ conversion in the fscanf function:
E.1.15 Locale-Specific Behavior (G.4)
E.1.15.1 (7.12.1) The local time zone and Daylight Savings Time:
(7.12.2.1) The era for the clock function
(5.2.1) The content of the execution character set, in addition to the required members:
(5.2.2) The direction of printing:
(7.1.1) The decimal-point character:
(7.3) The implementation-defined aspects of character testing and case mapping functions:
(7.11.4.4) The collation sequence of the execution character set:
(7.12.3.5) The formats for time and date:
Appendix F ISO C Data Representations
F.1 Storage Allocation
F.2 Data Representations
F.2.1 Integer Representations
F.2.2 Floating-Point Representations
F.2.3 Exceptional Values
F.2.4 Hexadecimal Representation of Selected Numbers
F.2.5 Pointer Representation
F.2.6 Array Storage
F.2.7 Arithmetic Operations on Exceptional Values
F.3 Argument-Passing Mechanism
F.3.1 32-Bit SPARC
F.3.2 64-Bit SPARC
F.3.3 x86/x64
Appendix G Performance Tuning (SPARC)
G.1 Limits
G.2 The libfast.a Library
Appendix H The Differences Between K&R Sun C and Sun ISO C
H.1 K&R Sun C Incompatibilities With Sun ISO C
H.2 Keywords
© 2010, Oracle Corporation and/or its affiliates