Operacja na zmiennej w różnych miejscach programu

0

Witajcie,

Od pewnego czasu mam amatorsko do czynienia z językiem C.

W wielu już sytuacjach borykam się z pewnym zagadnieniem które obchodzę na skróty niemniej chciałbym dowiedzieć się czy jest szansa zrobić to jak ja chcę :)

Mianowicie:

Mam plik np. driver.rtc.c w którym pobieram sobie dane z modułu zegarka rtc a w nim w pliku nagłówka strukture:.

typedef struct
{
u8 Hour
u8 Min
u8 Sec
} _RTC

Mam plik functions.c w którym do struktury przekazuje pobrane dane co 1 sek.

_RTC rtc;

void get_time(void)
{
RTC_GETTIME(&rtc)
}

Teraz chcę sobie utworzyć plik z menu np. menu.c w którym wyświetle sobie na wyswietlaczu dane które zostały pobrane z zegarka.

Problem w tym że w pliku menu.c nie wiem jak dostać sie do struktury z pliku functions.c do ktorej zapisywane są pobrane wczesniej dane.

Oczywiscie jezeli umieszcze funkcje do wyswietlania danych w pliku funkctions.c to bez problemu moge sie odwołac do struktury poprzez rtc.Hour, rtc.Min, rtc.Sec .. natomiast ja to chce zrobić w pliku menu.c - po prostu żeby mieć czytelniej.

Czy w języku C jest to w ogóle możliwe?

1
YouFukedUp napisał(a):

Czy w języku C jest to w ogóle możliwe?

Jest możliwe, z góry wiem że tak, choć nie wiem z czym dokładnie masz problem.

Od pewnego czasu mam amatorsko do czynienia z językiem C. >
W wielu już sytuacjach borykam się z pewnym zagadnieniem które obchodzę na skróty niemniej chciałbym dowiedzieć się czy jest szansa zrobić to jak ja chcę :)

Bo to nie trzeba się borykać, tylko wziąć w rękę podrecznik. Założę się, że odpowiedź jest na pierwszych 10 kartkach

Sorry, ale masz 100% atrybutów kogoś, ktoś nic nie czytał, tylko "uczy się" przez kopiowanie

ps. jeśli ktoś dał definicje struktur w .c, już samo to dowodzi, ze z niego nie warto sie uczyć *)

*) kolejny mikroprocesorowiec, który tam samo nic nie czytał ?

2
#ifndef _DRIVER_H
#define _DRIVER_H

typedef struct 
{
  u8 Hour;
  u8 Min;
  u8 Sec;
} _RTC;

_RTC rtc;

#endif

Możesz sobie np. do header file wrzucić tą strukturę i będzie ona dostępna w każdym pliku, który zrobi #include, a kompilator utworzy tylko jeden taki obiekt przez to, że są guardy preprocessora, lub np. #pragma once

0

czyżby chodziło o export tej globalki ?

0

Napisałem jasno że w piku nagłówkowym .c czyli w pliku .h .. moze czytanie ze zrozumieniem potrenuj zamiast przyczepiać sie od razu i oceniać...

2

functions.h:

#ifndef _FUNCTIONS_H
#define _FUNCTIONS_H
// tu include z tym _RTC

_RTC get_time();
#endif

functions.c:

#include "functions.h"

_RTC get_time()
{
   _RTC rtc;
   RTC_GETTIME(&rtc);
   return rtc
}

menu.c:

#include "functions.h"

void x()
{
  _RTC rtc=get_time();
}

Oczywiście musisz stworzyć projekt do którego dodać swoi pliki *.c
Ewentualnie kompilujesz ich razem

1 użytkowników online, w tym zalogowanych: 0, gości: 1