Uživatel:Jkl~cswikiversity/Studuji cpp/poznamky2

Do kategorie poznamky2 chci zahrnout postřehy, které se mohou hodit při low-level programování a dále to co se dozvím na [1] a [2].

Low-level

editovat

Přímý přístup do paměti:

#define VID ((unsigned (*)[80])0xB8000000) //CGA videopaměť

void foo() {
   int *hardware_address = (int *)0x7FFF; // tohle je druhá možnost
   VID[4][1] = 0x1F00 | 'A';
}

Blackhole

editovat
  • V argv[0] je uloženo jméno procesu - pokud byl volán s cestou, tak i cesta. To elegantně obsloužíme takto:
char * progname = basename(argv[0]);
  • proměnné systému
    • v proměnné envp jsou proměnné systému jako pole stringů, poslení je prázdný
int main (int argc, char ** argv, char ** envp) { 
    • jde to ale také bez úpravy mainu, neboť by se totéž mělo vyskytovat v
char ** environ
  • pro návratové hodnoty existují makra EXIT_SUCCESS a EXIT_FAILURE