Advanced C for Real-time Systems

מק"ט: #4396 | משך קורס: 24 שעות אק'

C is an extremely rich yet concise programming language that is suitable for complex software developments. However, good C coding style and an in-depth knowledge of the language is vital to ensure software quality. Even after considerable C programming experience, there can be areas of the language that are not well understood, and Advanced C will help you to address these gaps. Far from standing still, the C language has steadily developed, and practitioners may have missed these changes. This C course is designed for the practicing software developer and allows you to gain a better understanding of the language, run-time library and software engineering techniques available with C.

הקורס פעיל לקבוצות מטעם ארגונים בלבד, ניתן לשלוח פנייה רק אם מדובר בקבוצה
*שדות חובה
PDF version


Better understand the C programming language pros and cons and how to use it effectively in a time critical application.

קהל יעד


Software and hardware engineers that use C as a primary language and want to learn how to get the most of it

תנאי קדם

  • Basic C knowledge



Software Tools


  • Compilation basics - how does a compiler work?

  • Compile optimizations

  • Attributes – explain some common attributes

  • Linker basics – how does a linker work?

  • Map file for linker

  • Makefile  


The Preprocessor


  • Predefined symbols

  • Conditional compilation

  • Advanced directives

  • Digraphs and Trigraphs

  • Variadic Macros (C99);


Understanding Complex Declarations


  • Reading and writing declarations

  • Using typedefs effectively

  • Using casts


Advanced Pointers


  • Using void pointers

  • Defining and using function pointers

  • Restricted pointers (C99);

  • Pointer to function


Advanced Array Handling


  • Arrays and functions

  • Multidimensional arrays

  • Pointers and arrays

  • C99 Variable

  • Length Arrays


Advanced Structure Issues


  • Initializing Structures

  • C99 changes

  • Bitfields

  • Packing and padding

  • Reading and writing to files


Dynamic Memory Allocation


  • Memory allocation

  • Allocating arrays

  • Allocating structures

  • Error-detection techniques

  • Stack usage, frame pointers.

  • Volatile/non-volatile variables/pointers


Common Pitfalls


  • Common coding errors

  • Tips and tricks      


C and Assembly


  • Calling Assembly from C

  • Inline Assembly

  • Browsing Disassembly

  • Best practices