Importowanie zmiennej z pliku nagłowkowego

Importowanie zmiennej z pliku nagłowkowego
KE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 127
0

Witam.
Mam problem z plikiem nagłówkowym.

plik nagłówkowy, chodzi mi o zmienną ticks.

Kopiuj
#ifndef __IRQ_HANDLER__
#define __IRQ_HANDLER__
/******************************************************************************
 * makro __cplusplus pozwala uzyc procedury obslugi przerwan w programie
 * napisanym w C++
 * Jest ono automatycznie ustawiane jezeli plik ma rozszerzenie cpp, cc, cxx
 ******************************************************************************/
#ifdef __cplusplus  

volatile tU32 ticks = 0;
extern "C" {
#endif
void interrupt2(void);
#ifdef __cplusplus
}
#endif


#endif //__IRQ_HANDLER__

Nastepnie includuję nagłówegdo plik .c
Jednak program wyrzuca błąd 'ticks' undeclared first use in this function.
Niestety tej zmienne bede również potrzebował w innym pliku, ale na razie nie mogę jej używać w tym a co dopiero w innym.

Kopiuj
#include <lpc2xxx.h>
#include "interrupt.h"

void interrupt2(void) {
	ticks++;
	T1IR = 0xff;
	VICVectAddr = 0x00;
}

Widzicie jakiś błąd ?
Kombinowałem również z 'extern' jednak z marnym skutkiem.

PanRiK
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 104
0

Kiedyś miałem podobny problem, próbowałem na różne sposoby.
Korzystałem wtedy z IDE Code::Blocks.
Okazało się, że plik nagłówkowy nie był w tym samym projekcie.

Może tutaj jest to samo?
W sensie może pliki nie są w tym samym katalogu lub nie są w tym samym projekcie.

Jeżeli zmienna jest jako globalna to musisz ją zadeklarować "extern"

kaczus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Łódź
  • Postów: 1403
0

Zmiennych nie wrzuca się do plików nagłówkowych, tam ew externy, ale to też nieładne i jak ci się trochę projekt rozrośnie i pomyślisz choćby o wielowątkowości, to doprowadzi tylko do kłopotów...

Więc lepiej - wszystkie operacje na zmiennej ticks opisz w pliku c, gdzie zadeklarujesz tą zmienną. W pliku nagłówkowym natomiast odpowiednie metody udostępnij, które będą zawiadywały tą zmienną.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.