global array av structar...med pekare..=(
Re: global array av structar...med pekare..=(
varför skulle det vara ett typiskt exempel på detta??
det går ju tydligen göra som jag förstår det bara att det är komplicerat. och det hade varit en en bättre kod men jag har inte tid att få det att funka
det går ju tydligen göra som jag förstår det bara att det är komplicerat. och det hade varit en en bättre kod men jag har inte tid att få det att funka
Re: global array av structar...med pekare..=(
Det kan inte vara så enkelt att du har slut på minnet, din struct tar upp 680 bytes, hur mycket ram har processorn?
Re: global array av structar...med pekare..=(
den har 4K bytes (atmega644)
men jag lägger ner med allokeringen. verkar inte värt det.
men dock en annan fråga:
jag vill göra en global array av structs som alltså ska kunna kommas åt från olika delar av mitt program.
jus nu sitter jag så jag inte kan komma åt någon av mina c programmeringsböcker och jag försöker hitta infon på nätet..
google verkar hata mig för jag hamnar bara på massa skitsidor som inte har ett dugg med det jag söker efter...
är det nån som vet nån sida där de nått bra förklarande exempel på globala arrays av strukturer??
pinsamt att fråga eftersom det naturligftvis måste finnas en hel drös där ute. jag vet att jag sett en del själv...
men kan som sagt inte hitta nån för tillfället och jag är lite tidsstressad..
men jag lägger ner med allokeringen. verkar inte värt det.
men dock en annan fråga:
jag vill göra en global array av structs som alltså ska kunna kommas åt från olika delar av mitt program.
jus nu sitter jag så jag inte kan komma åt någon av mina c programmeringsböcker och jag försöker hitta infon på nätet..
google verkar hata mig för jag hamnar bara på massa skitsidor som inte har ett dugg med det jag söker efter...
är det nån som vet nån sida där de nått bra förklarande exempel på globala arrays av strukturer??
pinsamt att fråga eftersom det naturligftvis måste finnas en hel drös där ute. jag vet att jag sett en del själv...
men kan som sagt inte hitta nån för tillfället och jag är lite tidsstressad..
Re: global array av structar...med pekare..=(
ändrar din tidigare kod lite:jag vill göra en global array av structs som alltså ska kunna kommas åt från olika delar av mitt program.
i meny.h-filen:
Kod: Markera allt
#ifndef menu_h
#define menu_h
typedef struct
{
char va[30];
int id;
int nummer;
}info;
extern info xbee[20];
#endif
Kod: Markera allt
#include "menu.h"
info xbee[20];
Re: global array av structar...med pekare..=(
Naturligtvis beroende på din kompilator, men testa detta.
types.h
vars.h
Du kan på detta sätt inkludera "vars.h" i samtliga C-filer i projektet, utan att råka ut för dubbla deklarationer.
Det enda viktiga är att du i main.c dvs den filen du har main() i måste du infoga följande pragma
Dock måste du vara lite försiktig med stora structar och arrays av struktar, då de tar upp en hel del minne.
Många kompilatorer kan inte hålla reda på hur stor stacken blir, och det kan finnas risk att den skriver över dina variabler.
types.h
Kod: Markera allt
#ifndef _TYPES_H
#define _TYPES_H
typedef struct _INFO
{
char va[30];
int id;
int nummer;
}info;
#endif
/*--E-O-F--*/
vars.h
Kod: Markera allt
#ifdef MAIN_APP
#define EXTERNAL
#else
#define EXTERNAL extern
#endif
#ifndef _VARS_H
#define _VARS_H
#include "types.h"
EXTERNAL structdef varStruct; // deklarera variabeln
#endif
/*--E-O-F--*/
Det enda viktiga är att du i main.c dvs den filen du har main() i måste du infoga följande pragma
Kod: Markera allt
#define MAIN_APP
Många kompilatorer kan inte hålla reda på hur stor stacken blir, och det kan finnas risk att den skriver över dina variabler.
Re: global array av structar...med pekare..=(
TomasL: Varför denna röra med preprocessordirektiv? Att "råka" dubblera deklarationer har jag aldrig varit med om någon kompilator som klagar på. Definitioner däremot, men det är ju helt naturligt. Nej renast och mest "rätt" kod är mri's variant. Så enkelt och bra det kan bli helt enkelt. Inkludera meny.h där du behöver nå arrayen bara.
Re: global array av structar...med pekare..=(
Ingen röra, enbart ett extra, jämfört med vad man rimligtvis bör använda som minimum, ser inga konstigheter med de, dock återanvänder jag mycket kod, och lat som jag är, orkar jag inte modda koden för varje enskilt projekt.
Naturligtvis är MRI's helt korrekt, men det blir ett problem, då man måste ha två olika includes, beroende på var det skall inkluderas i.
Personligen definierar jag alla globala variabler i en gemensam fil, samma gäller funktionsprototyper, globala typdefinitioner och globala #defines i gemensamma filer, för att kunna hålla ordning på dem.
Naturligtvis är MRI's helt korrekt, men det blir ett problem, då man måste ha två olika includes, beroende på var det skall inkluderas i.
Personligen definierar jag alla globala variabler i en gemensam fil, samma gäller funktionsprototyper, globala typdefinitioner och globala #defines i gemensamma filer, för att kunna hålla ordning på dem.
Re: global array av structar...med pekare..=(
Förstår inte vad som skulle vara problematiskt, kan du förklara.Naturligtvis är MRI's helt korrekt, men det blir ett problem, då man måste ha två olika includes, beroende på var det skall inkluderas i.
För övrigt nämde du nåt om protabiliteten i ett tidigare inlägg, och då kan jag upplysa om att underscore *inte* bör användas som första tecken i en identifierare som du gjort. Enkelt och dubbelt underscore först är reserverat för kompilatorns/platformens interna användning.
Edit: stavfel
Senast redigerad av mri 25 maj 2010, 22:10:19, redigerad totalt 1 gång.
Re: global array av structar...med pekare..=(
Förstår inte heller problematiken. Förstår inte ens varför man ska behöva inkludera flera filer. Det räcker med meny.h så finns globalen tillgänglig där. Och att samla alla globaler i en och samma fil tyder på dålig koddesign.
Re: global array av structar...med pekare..=(
hey!!!!!
fick det att funka....ahh koden var rätt men det var på ett annat ställe i koden som det blev fel..
kom på det vid frukosten i morse efter en god natts sömn.
höll på med koden en hel dygn i streck. då blir man väl för trött för att programmera.
var säker på att den inte fick global range på structen men det visade sig att den nollställdes på ett annat ställe....
den jag fick till var alltså den utan pekare och malloc och det. tyckte i slutänden att det var overkill med de
tack för all hjälp. för om jag inte tack vare er hade blivit mer övertygad av att den delen var rätt så hade jag nog fortfarande slagit huvudet mot väggen och försökt "fixa" den delen. så tack så hemskt mycke alla som hjälpt
fick det att funka....ahh koden var rätt men det var på ett annat ställe i koden som det blev fel..
kom på det vid frukosten i morse efter en god natts sömn.
höll på med koden en hel dygn i streck. då blir man väl för trött för att programmera.
var säker på att den inte fick global range på structen men det visade sig att den nollställdes på ett annat ställe....
den jag fick till var alltså den utan pekare och malloc och det. tyckte i slutänden att det var overkill med de
tack för all hjälp. för om jag inte tack vare er hade blivit mer övertygad av att den delen var rätt så hade jag nog fortfarande slagit huvudet mot väggen och försökt "fixa" den delen. så tack så hemskt mycke alla som hjälpt