Sei sulla pagina 1di 1

Workshop content:

C Basic data types


Integer types
Floating point types
The relationship between arrays and
pointers
Enums
Casting and type conversion
Little and Big endian

Declarations (the basics)


Variables
Storage Classes
Type qualifiers (const and volatile)
Constants and declarations
Object Lifetimes
Static and Automatic Duration
Fixed- and Variable-Length Arrays
Linkage
Memory location (stack, data, bss)

Incomplete types
Void
Struct/union as incomplete type
Mutually-Referential Types
Array as incomplete type
Ellipsis Parameters
Abstract Types

Functions in C
Functions and function prototypes
Passing arrays to functions
External variables and scope rules
Static variables
Calling conventions (examples: MIPS, Intel)
Calling assembly code from C
Calling C from assembly code (+)
Understanding C's call by value mechanism
for passing arguments

Understanding C's return value mechanism


Recursion
Main function
Common errors

Pointers and Arrays


Overview
Pointer Types
Using sizeof
Pointer Arithmetic
Pointers to pointers
Arrays
The relationship of pointers and arrays
How C deals with multi-dimensional arrays
Passing Arrays to Functions
Arrays of pointers - their uses and
initialization
Pointers and constant correctness
Function pointers
Void pointers
Uninitialized Pointers
Null Pointers
Endianess

Input-output
Standard input and standard output
Formatted output - printf
Formatted input - scanf
The dangers of scanf
File access and file I/O
Binary I/O

Strings
String initialization
Strings and string functions
Passing Strings to Functions
String Handling

Standard String Functions


String constant, location in memory
Memory overwrite
Structures - Member Alignment and
Padding
Unions

Multiple-File Programs
Large Programs How to Split a Program
Sharing Declarations
Using and writing Header Files
Writing a Header File

Build process, Libraries


Introduction
Software Building Concepts
Preprocessor
Compiler
Assembler
Linker
Linker scripts
Linker Errors
Building and using libraries

Makefiles, RCS and CVS


A Simple Project
Targets and Prerequisites in Make
Building an Object File with Make
Building an Executable with Make
Rebuilding When Prerequisites Change
Pattern Rule Variables
Implicit Rules
Configuring Implicit Rules
Substitution References
The importance of version control
SVN

An introduction to data structures and


algorithms
Allocating and freeing memory
Circular buffers
Double buffering
Singly linked lists, doubly linked lists and queues
FIFO queues and LIFO queues (stacks)
Finite state machine
Diagnostics assert

Embedded System Oriented Topics


Compiler specific features
o #pragmas
o Non ANSII C extensions
o Accessing and manipulating special function
registers
Defining bit oriented data structures
Poling and interrupts
Startup code

Threads, POSIX Pthreads


Processes and Threads Analogy
Threads (non) shared data
Creating Posix Pthreads
Finishing thread execution, return value
Canceling threads

Threads, POSIX Pthreads


Synchronization
Shared Data Problems
Race Conditions
Critical Sections
Mutexes
Condition Variables
Semaphores
Thread-Safe Functions

RT-RK, LLC Narodnog fronta 23a 21000 Novi Sad, Serbia Phone: +381 (0)21 480 11 00 | Fax: +381 (0)21 450 721 www.rt-rk.com

Potrebbero piacerti anche