Program viselkedések

  • Megfigyelhető viselkedés: standard módon viselkedik a program
  • Nem definiált viselkedés: a fordító figyelmeztethet (de nem mindig), és kiszámíthatatlanul fog viselkedni a kód pl.: null pointer
  • Nem specifikált viselkedés: nincs dokumentálva pl f(a, b)
  • Implementáció specifikált viselkedés: egy adott platformon mindig ugyan úgy fog működni a program pl: sizeof(int)
  • Nyelv (locale) specifikus viselkedés pl: islower(‘á’)
  • Strictly conforming program: NINCS: nem definiált; nem specifikált; implementáció specifikált viselkedés

C programok felépítése

Translation units
  • Kommentek

    return 0; // sor végi komment
    /* Több soros komment
    .....
    */
  • preprocesszor direktívák (#)

    #include <stdio.h>
     
    // preprocesszor lépésben a fordító kicseréli a MESSAGE-t arra, ami utána jön
    #define MESSAGE "valami"
     
    // Fordítási időben eldönthető direktíva
    #ifdef SZIA  // fordítóparaméter!
    	#define MESSAGE "szia vilag"
    #else
    	#define MESSAGE "hello world"
    #endif
     
    //gyakorlatban!
    #ifdef __unix__
    	#include <unistd.h>
    #elif defined _Win32
    	#include <windows.h>
    #else
    	#error Only UNIX and WINDOWS is supported
    #end
     
    // Automatikus megoldás header fileok definiálásra
    #ifndef MYHEADER_H
    #define MYHEADER
    /* header content */
    #endif 
Tokenek:
  • keywords
  • identifiers
    • Konvenciók:
  • literals / constants
  • Operators
  • Separators

… (sok mindent nem írtam le)