LPCxpresso: Potize s optimalizaci

Jan Waclawek konfera na efton.sk
Středa Červenec 27 14:29:32 CEST 2016


> su ludia ktorych chyta
> hroza ked v .h subore vidia deklaraciu niecoho co alokuje pamat

Deklaracia niecoho co alokuje pamat sa nazyva definicia (C99 6.7.#5).
Pouzivanie tohoto pojmu zjednodusuje a zjednoznacnuje veci.

Je to dobry zvyk, lebo tak nealokujes tu pamat omylom viackrat. Nejde o tu
pamat ale o vzajomnu viditelnost tych viackrat alokovanych veci z roznych
modulov.

Takze spravne:
- globalna premenna ma byt *definovana* (t.j. bez extern) len v jedinom .c
subore

- globalna premenna ma byt *deklarovana* (t.j. nie definovana, t.j. *s*
extern) v nejakom .h (typicky s rovnakym menom ako je .c kde je definovana)

- tento .h ma byt #includnuty do vsetkych suborov kde sa tato globalna
premenna pouzije, vratane toho, kde bola *definovana*


Toto je stabna kultura, ktora nie je prekladacom natvrdo vyzadovana, ktora
ale ak sa rigorozne dodrziava, tak svet je jednoduchsi a krajsi.

-----------

Tak este raz, a pomaly:

---
a.h:
#include <stdint.h>
extern volatile uint8_t flag;

---
a.c:

#include "a.h"

volatile uint8_t flag;

void callback(void) { // resp. akekolvek ine veci
  flag = 1;
}

----
main.c:

#include "a.h"

int main(void) {
  // inicializacia hardwaru
  // inicializacia toho callbacku
  while(1) {
    if (flag == 1) {
      printf("Moohoo\n"); // alebo zablikanie LED alebo ekvivalent
      flag = 0;
    }
  }
}



---

Skuste urobit MINIMALISTICKY projekt v ktorom nie je nic zbytocne okrem
tohoto. Toto musi fungovat

wek




Další informace o konferenci Hw-list