Chapter 4 |
4
|
Data Storage and Representation
|
4.1
|
Storage Allocation
|
4.2
|
Standard-Conforming Method of Controlling External Objects
|
4.3
|
Global Storage Classes
|
4.3.1
|
The globaldef and globalref Specifiers
|
4.3.2
|
Comparing the Global and the External Storage Classes
|
4.3.3
|
The globalvalue Specifier
|
4.4
|
Storage-Class Modifiers
|
4.4.1
|
The noshare Modifier
|
4.4.2
|
The readonly Modifier
|
4.4.3
|
The _align Modifier
|
4.5
|
Floating-Point Numbers (float, double, long double)
|
4.6
|
Pointer Conversions
|
4.7
|
Structure Alignment
|
4.7.1
|
Bit-Field Alignment
|
4.7.2
|
Bit-Field Initialization
|
4.7.3
|
Variant Structures and Unions
|
4.8
|
Program Sections
|
4.8.1
|
Attributes of Program Sections
|
4.8.2
|
Program Sections Created by HP C
|
Chapter 5 |
5
|
Preprocessor Directives
|
5.1
|
CDD/Repository Extraction (#dictionary)
|
5.2
|
File Inclusion (#include)
|
5.2.1
|
Inclusion Using Angle Brackets
|
5.2.2
|
Inclusion Using Quotation Marks
|
5.2.3
|
Inclusion of Text Modules
|
5.2.4
|
Macro Substitution in #include Directives
|
5.3
|
Changing the Default Object Module Name and Identification (#module)
|
5.4
|
Implementation-Specific Preprocessor Directive (#pragma)
|
5.4.1
|
#pragma assert Directive
|
5.4.1.1
|
#pragma assert func_attrs
|
5.4.1.2
|
#pragma assert global_status_variable
|
5.4.1.3
|
Usage Notes
|
5.4.1.4
|
#pragma assert non_zero
|
5.4.2
|
#pragma builtins Directive
|
5.4.3
|
#pragma dictionary Directive
|
5.4.4
|
#pragma environment Directive
|
5.4.5
|
#pragma extern_model Directive
|
5.4.5.1
|
Syntax
|
5.4.5.2
|
#pragma extern_model common_block
|
5.4.5.3
|
#pragma extern_model relaxed_refdef
|
5.4.5.4
|
#pragma extern_model strict_refdef
|
5.4.5.5
|
#pragma extern_model globalvalue
|
5.4.5.6
|
#pragma extern_model save
|
5.4.5.7
|
#pragma extern_model restore
|
5.4.5.8
|
Effects on the HP C Run-Time Library and User Programs
|
5.4.5.9
|
Example
|
5.4.6
|
#pragma extern_prefix Directive
|
5.4.7
|
#pragma function Directive
|
5.4.8
|
#pragma [no]include_directory Directive
|
5.4.9
|
#pragma [no]inline Directive
|
5.4.10
|
#pragma intrinsic Directive
|
5.4.11
|
#pragma linkage Directive (ALPHA ONLY)
|
5.4.12
|
#pragma linkage Directive (I64 ONLY)
|
5.4.12.1
|
#pragma linkage Format
|
5.4.12.1.1
|
Register Mapping
|
5.4.12.1.2
|
Mapping Diagnostics
|
5.4.12.2
|
#pragma linkage_ia64 Format
|
5.4.13
|
#pragma [no]member_alignment Directive
|
5.4.14
|
#pragma message Directive
|
5.4.14.1
|
#pragma message option1
|
5.4.14.2
|
#pragma message option2
|
5.4.14.3
|
#pragma message (quoted-string)
|
5.4.15
|
#pragma module Directive
|
5.4.16
|
#pragma names Directive
|
5.4.17
|
#pragma optimize Directive
|
5.4.18
|
#pragma pack Directive
|
5.4.19
|
#pragma pointer_size Directive
|
5.4.20
|
#pragma required_pointer_size Directive
|
5.4.21
|
#pragma [no]standard Directive
|
5.4.22
|
#pragma unroll Directive
|
5.4.23
|
#pragma use_linkage Directive
|
Chapter 6 |
6
|
Predefined Macros and Built-In Functions
|
6.1
|
Predefined Macros
|
6.1.1
|
CC$gfloat (G_Floating Identification Macro)
|
6.1.2
|
System Identification Macros
|
6.1.2.1
|
The __DECC_VER Macro
|
6.1.2.2
|
The __VMS_VER Macro
|
6.1.3
|
Standards Conformance Macros
|
6.1.4
|
Floating-Point Macros
|
6.1.5
|
Compiler-Mode Macros
|
6.1.6
|
Pointer-Size Macro
|
6.1.7
|
The __HIDE_FORBIDDEN_NAMES Macro
|
6.2
|
Built-In Functions
|
6.2.1
|
Built-In Functions for OpenVMS Alpha Systems (ALPHA ONLY)
|
6.2.1.1
|
Translation Macros for VAX C Built-in Functions
|
6.2.1.2
|
In-line Assembly Code---ASMs
|
6.2.1.3
|
Absolute Value ( __ABS)
|
6.2.1.4
|
Acquire and Release Longword Semaphore (__ACQUIRE_SEM_LONG, __RELEASE_SEM_LONG)
|
6.2.1.5
|
Add Aligned Word Interlocked ( __ADAWI)
|
6.2.1.6
|
Add Atomic Longword ( __ADD_ATOMIC_LONG)
|
6.2.1.7
|
Add Atomic Quadword ( __ADD_ATOMIC_QUAD)
|
6.2.1.8
|
Allocate Bytes from Stack ( __ALLOCA)
|
6.2.1.9
|
AND Atomic Longword ( __AND_ATOMIC_LONG)
|
6.2.1.10
|
AND Atomic Quadword ( __AND_ATOMIC_QUAD)
|
6.2.1.11
|
Atomic Add Longword (__ATOMIC_ADD_LONG)
|
6.2.1.12
|
Atomic Add Quadword (__ATOMIC_ADD_QUAD)
|
6.2.1.13
|
Atomic AND Longword (__ATOMIC_AND_LONG)
|
6.2.1.14
|
Atomic AND Quadword (__ATOMIC_AND_QUAD)
|
6.2.1.15
|
Atomic OR Longword (__ATOMIC_OR_LONG)
|
6.2.1.16
|
Atomic OR Quadword (__ATOMIC_OR_QUAD)
|
6.2.1.17
|
Atomic Increment Longword (__ATOMIC_INCREMENT_LONG)
|
6.2.1.18
|
Atomic Increment Quadword (__ATOMIC_INCREMENT_QUAD)
|
6.2.1.19
|
Atomic Decrement Longword (__ATOMIC_DECREMENT_LONG)
|
6.2.1.20
|
Atomic Decrement Quadword (__ATOMIC_DECREMENT_QUAD)
|
6.2.1.21
|
Atomic Exchange Longword (__ATOMIC_EXCH_LONG)
|
6.2.1.22
|
Atomic Exchange Quadword (__ATOMIC_EXCH_QUAD)
|
6.2.1.23
|
Compare Store Longword ( __CMP_STORE_LONG)
|
6.2.1.24
|
Compare Store Quadword ( __CMP_STORE_QUAD)
|
6.2.1.25
|
Convert G_Floating to F_Floating Chopped ( __CVTGF_C)
|
6.2.1.26
|
Convert G_Floating to Quadword ( __CVTGQ)
|
6.2.1.27
|
Convert IEEE T_Floating to IEEE S_Floating Chopped ( __CVTTS_C)
|
6.2.1.28
|
Convert IEEE T_Floating to Quadword ( __CVTTQ)
|
6.2.1.29
|
Convert X_Floating to Quadword ( __CVTXQ)
|
6.2.1.30
|
Convert X_Floating to IEEE T_Floating Chopped ( __CVTXT_C)
|
6.2.1.31
|
Copy Sign Built-in Functions
|
6.2.1.32
|
Cosine ( __COS)
|
6.2.1.33
|
Double-Precision, Floating-Point Arithmetic Built-in Functions
|
6.2.1.34
|
Floating-Point Absolute Value ( __FABS)
|
6.2.1.35
|
_leadz
|
6.2.1.36
|
Long Double-Precision, Floating-Point Arithmetic Built-in Functions
|
6.2.1.37
|
Longword Absolute Value ( __LABS)
|
6.2.1.38
|
Lock and Unlock Longword (__LOCK_LONG, __UNLOCK_LONG)
|
6.2.1.39
|
Memory Barrier ( __MB)
|
6.2.1.40
|
Memory Copy and Set Functions ( __MEMCPY, __MEMMOVE, __MEMSET)
|
6.2.1.41
|
OR Atomic Longword ( __OR_ATOMIC_LONG)
|
6.2.1.42
|
OR Atomic Quadword ( __OR_ATOMIC_QUAD)
|
6.2.1.43
|
Privileged Architecture Library Code Instructions
|
6.2.1.44
|
__PAL_BPT
|
6.2.1.45
|
__PAL_BUGCHK
|
6.2.1.46
|
__PAL_CFLUSH
|
6.2.1.47
|
__PAL_CHME
|
6.2.1.48
|
__PAL_CHMK
|
6.2.1.49
|
__PAL_CHMS
|
6.2.1.50
|
__PAL_CHMU
|
6.2.1.51
|
__PAL_DRAINA
|
6.2.1.52
|
__PAL_GENTRAP
|
6.2.1.53
|
__PAL_HALT
|
6.2.1.54
|
__PAL_INSQHIL
|
6.2.1.55
|
__PAL_INSQHILR
|
6.2.1.56
|
__PAL_INSQHIQ
|
6.2.1.57
|
__PAL_INSQHIQR
|
6.2.1.58
|
__PAL_INSQTIL
|
6.2.1.59
|
__PAL_INSQTILR
|
6.2.1.60
|
__PAL_INSQTIQ
|
6.2.1.61
|
__PAL_INSQTIQR
|
6.2.1.62
|
__PAL_INSQUEL
|
6.2.1.63
|
__PAL_INSQUEL_D
|
6.2.1.64
|
__PAL_INSQUEQ
|
6.2.1.65
|
__PAL_INSQUEQ_D
|
6.2.1.66
|
__PAL_LDQP
|
6.2.1.67
|
__PAL_STQP
|
6.2.1.68
|
__PAL_MFPR_XXXX
|
6.2.1.69
|
__PAL_MTPR_XXXX
|
6.2.1.70
|
__PAL_PROBER
|
6.2.1.71
|
__PAL_PROBEW
|
6.2.1.72
|
__PAL_RD_PS
|
6.2.1.73
|
__PAL_REMQHIL
|
6.2.1.74
|
__PAL_REMQHILR
|
6.2.1.75
|
__PAL_REMQHIQ
|
6.2.1.76
|
__PAL_REMQHIQR
|
6.2.1.77
|
__PAL_REMQTIL
|
6.2.1.78
|
__PAL_REMQTILR
|
6.2.1.79
|
__PAL_REMQTIQ
|
6.2.1.80
|
__PAL_REMQTIQR
|
6.2.1.81
|
__PAL_REMQUEL
|
6.2.1.82
|
__PAL_REMQUEL_D
|
6.2.1.83
|
__PAL_REMQUEQ
|
6.2.1.84
|
__PAL_REMQUEQ_D
|
6.2.1.85
|
__PAL_SWPCTX
|
6.2.1.86
|
__PAL_SWASTEN
|
6.2.1.87
|
__PAL_WR_PS_SW
|
6.2.1.88
|
_popcnt
|
6.2.1.89
|
_poppar
|
6.2.1.90
|
Read Process Cycle Counter ( __RPCC)
|
6.2.1.91
|
Sine ( __SIN)
|
6.2.1.92
|
Single-Precision, Floating-Point Arithmetic Built-in Functions
|
6.2.1.93
|
Test for Bit Clear then Clear Bit Interlocked (__INTERLOCKED_TESTBITCC_QUAD)
|
6.2.1.94
|
Test for Bit Clear then Clear Bit Interlocked (__TESTBITCCI)
|
6.2.1.95
|
Test for Bit Set Then Set Bit Interlocked (__INTERLOCKED_TESTBITSS_QUAD)
|
6.2.1.96
|
Test for Bit Set then Set Bit Interlocked (__TESTBITSSI)
|
6.2.1.97
|
_trailz
|
6.2.1.98
|
Trap Barrier Instruction ( __TRAPB)
|
6.2.1.99
|
Unsigned Quadword Multiply High ( __UMULH)
|
6.2.2
|
Built-In Functions for I64 Systems (I64 ONLY)
|
6.2.2.1
|
Builtin Differences on I64 Systems
|
6.2.2.2
|
Built-in Functions Specific to I64 Systems
|
6.2.2.3
|
Get Hardware Register Value ( __getReg)
|
6.2.2.4
|
Set Hardware Register Value ( __setReg)
|
6.2.2.5
|
Get Index Register Value ( __getIndReg)
|
6.2.2.6
|
Set Index Register Value ( __setIndReg)
|
6.2.2.7
|
Generate Break Instruction ( __break)
|
6.2.2.8
|
Serialize Data ( __dsrlz)
|
6.2.2.9
|
Flush Cache Instruction ( __fc)
|
6.2.2.10
|
Flush Write Buffers ( __fwb)
|
6.2.2.11
|
Invalidate ALAT ( __invalat)
|
6.2.2.12
|
Invalidate ALAT ( __invala)
|
6.2.2.13
|
Execute Serialize ( __isrlz)
|
6.2.2.14
|
Insert Data Address Translation Cache ( __itcd)
|
6.2.2.15
|
Insert Instruction Address Translation Cache ( __itci)
|
6.2.2.16
|
Insert Data Translation Register ( __itrd)
|
6.2.2.17
|
Insert Instruction Translation Register ( __itri)
|
6.2.2.18
|
Purge Translation Cache Entry ( __ptce)
|
6.2.2.19
|
Purge Global Translation Cache ( __ptcg)
|
6.2.2.20
|
Purge Local Translation Cache ( __ptcl)
|
6.2.2.21
|
Purge Global Translation Cache and ALAT ( __ptcga)
|
6.2.2.22
|
Purge Data Translation Register ( __ptrd)
|
6.2.2.23
|
Purge Instruction Translation Register ( __ptri)
|
6.2.2.24
|
Reset System Mask ( __rsm)
|
6.2.2.25
|
Reset User Mask ( __rum)
|
6.2.2.26
|
Set System Mask ( __ssm)
|
6.2.2.27
|
Set User Mask ( __sum)
|
6.2.2.28
|
Enable Memory Synchronization ( __synci)
|
6.2.2.29
|
Translation Hashed Entry Address ( __thash)
|
6.2.2.30
|
Translation Hashed Entry Tag ( __ttag)
|
6.2.2.31
|
Atomic Compare and Exchange ( _InterlockedCompareExchange_acq)
|
6.2.2.32
|
Atomic Compare and Exchange ( _InterlockedCompareExchange64_acq)
|
6.2.2.33
|
Atomic Compare and Exchange ( _InterlockedCompareExchange_rel)
|
6.2.2.34
|
Atomic Compare and Exchange ( _InterlockedCompareExchange64_rel)
|
6.2.2.35
|
Conditional Atomic Compare and Exchange Longword (__CMP_SWAP_LONG)
|
6.2.2.36
|
Conditional Atomic Compare and Exchange Quadword (__CMP_SWAP_QUAD)
|
6.2.2.37
|
Conditional Atomic Compare and Exchange Longword with Acquire Semantics ( __CMP_SWAP_LONG_ACQ)
|
6.2.2.38
|
Conditional Atomic Compare and Exchange Quadword with Acquire Semantics ( __CMP_SWAP_QUAD_ACQ)
|
6.2.2.39
|
Conditional Atomic Compare and Exchange Longword with Release Semantics ( __CMP_SWAP_LONG_REL)
|
6.2.2.40
|
Conditional Atomic Compare and Exchange Quadword with Release Semantics ( __CMP_SWAP_QUAD_REL)
|
6.2.2.41
|
Return Address ( __RETURN_ADDRESS)
|
6.2.2.42
|
Implement Alpha __PAL_GENTRAP and __PAL_BUGCHK Builtins (__break2)
|
6.2.2.43
|
Flush Register Stack ( __flushrs)
|
6.2.2.44
|
Load Register Stack ( __loadrs)
|
6.2.2.45
|
Probe Read-Access Permission ( __prober)
|
6.2.2.46
|
Probe Write-Access Permission ( __probew)
|
6.2.2.47
|
Translation Access Key ( __tak)
|
6.2.2.48
|
Translate to Physical Address ( __tpa)
|
6.2.3
|
Built-In Functions for OpenVMS VAX Systems (VAX ONLY)
|
6.2.3.1
|
Allocate Bytes from Stack ( __ALLOCA)
|
6.2.3.2
|
Add Aligned Word Interlocked ( _ADAWI)
|
6.2.3.3
|
Branch on Bit Clear-Clear Interlocked ( _BBCCI)
|
6.2.3.4
|
Branch on Bit Set-Set Interlocked ( _BBSSI)
|
6.2.3.5
|
Find First Clear Bit ( _FFC)
|
6.2.3.6
|
Find First Set Bit ( _FFS)
|
6.2.3.7
|
Halt ( _HALT)
|
6.2.3.8
|
Insert Entry into Queue at Head Interlocked ( _INSQHI)
|
6.2.3.9
|
Insert Entry into Queue at Tail Interlocked ( _INSQTI)
|
6.2.3.10
|
Insert Entry in Queue ( _INSQUE)
|
6.2.3.11
|
Locate Character ( _LOCC)
|
6.2.3.12
|
Move from Processor Register ( _MFPR)
|
6.2.3.13
|
Move Character 3 Operand ( _MOVC3)
|
6.2.3.14
|
Move Character 5 Operand ( _MOVC5)
|
6.2.3.15
|
Move from Processor Status Longword ( _MOVPSL)
|
6.2.3.16
|
Move to Processor Register ( _MTPR)
|
6.2.3.17
|
Probe Read Accessibility ( _PROBER)
|
6.2.3.18
|
Probe Write Accessibility ( _PROBEW)
|
6.2.3.19
|
Read General-Purpose Register ( _READ_GPR)
|
6.2.3.20
|
Remove Entry from Queue at Head Interlocked ( _REMQHI)
|
6.2.3.21
|
Remove Entry from Queue at Tail Interlocked ( _REMQTI)
|
6.2.3.22
|
Remove Entry from Queue ( _REMQUE)
|
6.2.3.23
|
Scan Characters ( _SCANC)
|
6.2.3.24
|
Skip Character ( _SKPC)
|
6.2.3.25
|
Span Characters ( _SPANC)
|