1 Introduction.
1.1 Origin and history of C--
1.2 What is C--?
1.3 Installing
2 Control of compilation
2.1 Command-line options of C--
2.1.1 /ON - optimize numeric expressions
2.1.2 /DE - temporarily increase variable bit-size
2.1.3 /ARGC - use alternate command-line handler
2.1.4 /OST - merge duplicate string constants
2.1.5 /D - predefine identifier as TRUE from command line
2.1.6 /IA - use simplified assembler input
2.1.7 /CRI - skip file included more than once
2.1.8 /IND - import function names from DLL
2.1.9 /WS - specify name of stub file for Windows programs
2.1.10 /WBSS - locate uninitialized data in a separate segment
2.1.11 /DBG - create debugging information
2.1.12 /J0 /J1 /J2
2.1.13 /LST - create assembler listing
2.1.14 /ENV - save address of environment variables
2.1.15 /CPA - clear post-area data
2.1.16 /W - output warnings
2.1.17 /NW - selectively switch off types of warnings
2.1.18 /WSI - short table import
2.2 Preprocessor directives
2.2.1 ?ifdef/?ifndef
2.2.2 ?initallvar
2.2.3 ?usestartup
2.2.4 ?startusevar
2.2.5 ?atexit
2.2.6 ?startuptomain
2.2.7 ?undef
2.2.8 ?align and ?aligncode
2.2.9 ?pragma
3 Constants
3.1 Numeric constants
3.2 Character constants
3.3 String constants
3.4 Constant expressions
4 Expressions
4.1 Types of expressions
4.2 Expressions of type EAX/AX/AL
4.3 Expressions using destination address of expression
4.4 Non-EAX/AX/AL expressions
4.5 Conditional expressions
4.5.1 Simple conditional expressions
4.5.2 Complex conditional expressions
4.6 Modification of expression type during assignment
4.7 Calculation in EAX/AX/AL register with a sign
5 Identifiers
5.1 Identifier format
5.2 Reserved identifiers
5.3 Universal registers for 16-bit and 32-bit modes
5.4 Predefined identifiers
6 Variables
6.1 Variable types
6.2 Variable declaration
6.3 Global variables
6.4 Local variables
6.5 Dynamic variables and structures
6.6 Assigning one value to several variables
6.7 Floating point variables
6.7.1 Format of floating point variables
6.7.2 Floating point constants
6.7.3 Range of permissible values
6.7.4 Mathematical operations
6.7.5 Transformations of types
6.7.6 Comparison operators
6.7.7 Comparing variables of type float with a 32-bit register
6.8 Pointers
7 Addressing
7.1 Relative addressing
7.2 Absolute addressing
8 Working with data blocks
8.1 Structures
8.1.1 What is a structure?
8.1.2 Syntax
8.1.3 Initializing structures at compilation
8.1.4 Initializing structures at run time
8.1.5 Operations on structure members
8.1.6 Embedded structures
8.1.7 Mapping a structure tag to a memory block
8.1.8 Bit fields in structures
8.2 Unions
8.3 Commands 'FROM' and 'EXTRACT'
9 Statements
9.1 Conditional statements
9.2 'do{} while' loop
9.3 'loop', 'LOOPNZ', 'loopnz' loops
9.4 'while', 'WHILE' loops
9.5 'for', 'FOR' loops
9.6 'switch/SWITCH' statement
9.7 'goto/GOTO' statement
9.8 'break/BREAK' statement
9.9 'continue/CONTINUE' statement
9.10 Logically combine conditions
9.11 Skip over loops
9.12 The logical negation operator
9.13 Calculate expression then check condition
9.14 Check bits during comparison operation
9.15 Transposition operator
9.16 Arithmetic negation operator
9.17 The bitwise negation operator
9.18 Special conditional expressions
9.19 Symbol '$' - inserts current address of program
9.20 Keyword 'static' and operator '::'
9.21 'sizeof' operator
9.22 Labels
10 Assembler
10.1 Assembler command support
10.2 Keyword 'asm'
10.3 Prefix 'dup' - repeat instructions DB/DW/DD
10.4 Pentium III instructions
11 Functions
11.1 Types of functions and macros
11.2 Stack call functions
11.3 Register call functions
11.4 Dynamic functions
11.4.1 Loading a dynamic function at a specific address in memory
11.5 Inline functions
11.5.1 Another use of 'inline'
11.6 Interrupt functions
11.7 Changing 'return' to 'goto'
11.8 Return values
11.9 Declaring options for register call functions
11.10 Declaring options for stack call functions
11.11 Use of macros
11.12 Transferring options to stack call functions via registers
11.13 Calling functions with an address in the register
11.14 Inline functions in the compiler
11.14.1 'ABORT', 'ATEXIT', 'EXIT' inline functions
11.14.2 inp/inportb, inport, inportd, outp/outportb, outport and
outportd inline functions
11.14.3 Floating point inline functions
11.15 Classes
11.15.1 Declaring functions in structures
11.15.2 Inheritance
11.15.3 Function inheritance
12 Types of output files
12.1 Output files of type .com
12.2 Output files of type .exe
12.3 .exe output files with 'tiny' memory model
12.4 .obj output files
12.5 .com file symbiosis
12.5.1 What is symbiosis?
12.5.2 How to do it
12.5.3 Uses
12.5.4 Abuses
12.6 SYS - Device drivers
12.7 Compiling ROM-BIOS extender code
12.8 32-bit files
12.8.1 32-bit code under DOS
12.8.2 32-bit code under Windows
12.8.3 Calling API functions by number
12.8.4 Creating DLL's under Windows
12.8.5 Initializing DLL's while loading
12.8.6 Compiling resources
12.9 Output files for MeOS (MenuetOS)
13 Applications
13.1 Searching for includ files
13.2 Registers which must be saved
13.3 c--.ini
13.4 startup.h--
13.5 mainlib.ldp
13.6 C-- symbols
14 Thanks