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