Pole struktur - Array of structures
Kdyby se to někomu hodilo informace na internetu jsou tak trochu různě po střípkách, hlavně o tom jak h udělat externí pro více zdrojových souborů. Kompilátor XC8 verze 2.10, standard C99
KDyž chci vytvořit strukturu pro text na LCD a přistupovat k němu z více míst v projektu, kde mám vložen h soubor.
lcd.h
typedef struct lcdstruct //Nějaké jméno, už pak nikde nefiguruje
{
uint16_t x; //x pozice
uint16_t y; //y pozice
char text[30]; //Text zobrazený na LCD
}lcdInfo; //Jméno typu
Struktura je zadefinovaná pěkně v h a teď se z ní udělá pole přímo v C souboru.
lcd.c
#include <stdint.h> //Definice standartních typů
lcdInfo lcdLine[10]; /* lcdInfo je typ - již vytvořená struktura, lcdLine je jméno pole se strukturama */
Máme vytvořené pole struktur s 10 řádkama na LCD. TAk je možné napsat 30 znaků na řádek kamkoli na LCD. Použití je ale jen v rámci lcd.c
použití:
lcdLine[1].x = 50;
lcdLine[1].y = 100;
strcpy(lcdLine[1].text,"Prvni radek");
Pokud chci tohle pole struktur sdílet kdekoli jinde v projektu v jiném C souboru, tak je potřeba se vrátit zpět do lcd.h a zadefinovat pole jako externí
extern lcdInfo lcdLine[10];
no a pak už v každém c souboru, kde chci použít pole lcdLine stačí jen přihodit
#include "lcd.h"
pak se už dá z kteréhokoli c, kde je h vložené, přistupovat úplně stejně jednoduše jako kdyby to bylo v lcd.c
Toť vše
Příště zkusím ukázat jak použít pointery a struktury k jednoduchému přístupu k prvkům v poli pomocí jmen.