Junior C kódování otázku?

M

mImoto

Guest
Dobrý den,

I am using structs v mém kódu.Nevím, který je lepší nebo více standar styl týkající se použití funkcí s structs.V mém případě jsem se kolem hodnoty funkce několika bajtů struct, nikoliv celý struct.Myslíte si, senioři předávání hodnotou nebo odkazem struct na funkce, když nemusíte projít mnohem bytů?

tj.

PORTS_PINS_Write_Port (MessageRx.BYTES.BYTE_4,
MessageRx.BYTES.BYTE_2);

Díky moc a pokud jde o,

mimoto

 
Pass ukazatel na strukturu a použití bez ohledu na strukturu prvek, který chcete.typedef struct
(
/ * Definovat data zde * /
StructMessageRx);int PORTS_PINS_Write_Port (structMessageRx * MessageRx)
(
x = MessageRx-> BYTES.BYTE_4;
return 0;
)

 
Ahoj,

Pomocí pasáž s odkazem vám umožní projít všechny struktury na funkci v jednom čase.

Více než to nechat si moci vrátit celočíselnou hodnotu na konci funkce vědět, jestli to skončilo normálně a aktualizovaly oblasti struktury a jejich použití v jiných funkcích.

Toto2001

 
Díky za pomoc, nechci tento post "Díky zprávu" pro body jen poděkovat rychlé odpovědi na mou otázku.Zítra se změní můj kód.

S pozdravem,

mimoto

 
Dobrý den, opět,

Jen jednu otázku.Co když budu potřebovat také předat struct odkazem na jinou funkci v rámci funkce, kterou jsem prošel odkaz na ni.Myslím Chtěl bych projít struct odkazem na funkci a pak uvnitř této funkce projít znovu struct odkazem na jinou funkci.Jak se vám seniory udělat?něco níže?

typedef struct
(
/ * Definovat data zde * /
StructMessageRx);int PORTS_PINS_Write_Port (structMessageRx * MessageRx)
(
x = MessageRx-> BYTES.BYTE_4;
New_Function (MessageRx)

return 0;
)

New_Function (structMessageRx * MessageRx)
(
...
return 0;
)Díky předem a pozdravem,

mimoto

 
Ano, to je způsob, jak to udělat.Váš kód se zdá správné.

Tomáš

 
Ahoj,
máte pravdu.To je způsob, jak to udělat.

Hodně štěstí
HMaier

 
Poslední otázka, slibuju.Mám-li použít místo struct unionsż?.

------------------------------
typedef unie MESSAGE
(
unsigned char data [8];

struct
(
BYTE BYTE_0;
BYTE BYTE_1;
BYTE BYTE_2;
BYTE BYTE_3;
BYTE BYTE_4;
BYTE BYTE_5;
BYTE BYTE_6;
BYTE BYTE_7;
) Bytů;

RX_MESSAGE);----------------------------------------

Hlavním (

RX_MESSAGE MessageRx1;

PORT_PINS_Write_Port (& MessageRx1)
...
)

-------------------------------------------------- ---------------
int PORT_PINS_Write_Port (RX_MESSAGE * MessageRx)
(

x = MessageRx-> BYTES.BYTE_4;
y = NewFunction (MessageRx);
if (y | = 0)
(
return 1; //(*) otázku níže
)
else return 0;
)

New_Function (RX_MESSAGE * MessageRx)
(
...
return 0;
)

Je to také správný způsob, jak pro odbory?
(*) Jak se vám odborníci použití návratové hodnoty?tímto způsobem?

Díky předem za tvůj čas,

S pozdravem,

mimoto

 
1.typedef definuje nový typ dat uživatele.To zahrnuje stavby, odbory, etc ...

Předávání ukazatel na nějaký typ objektu v některých volání funkce je v pořádku, bez ohledu, že objekt může být tak dlouho, jak je definována správně.

2.
/ * 1. způsob * /
If (y! = 0)
(
return 1;
)
jiný
(
return 0;
)

/ * 2. způsob * /

návratnost (y? 1: 0);

Tomáš

 
Tak je to správně s odbory a struktur.
Ukazatele mají vždy stejnou velikost (32 bitů na Windows nebo méně v oblasti vestavěných), takže pokud tento ukazatel na char budete posílat 4 bajty namísto 1, ale pokud se to ukazuje na obrovské struktury to bude o délce 4 bajty, jakož .

 
Když máte mnoho funkcí, které byste měli projít stejnou referenci.Myslíte si, používat stejné jméno argumenty funkce nebo jiný?

1. možnost:
Int PORT_PINS_Write_Port (RX_MESSAGE * MessageRx)
New_Function (RX_MESSAGE * MessageRx)
New_Function2 (RX_MESSAGE * MessageRx)

2. varianta:
Int PORT_PINS_Write_Port (RX_MESSAGE * MessageRx1)
New_Function (RX_MESSAGE * MessageRx2)
New_Function2 (RX_MESSAGE * MessageRx3)

Díky předem za tvůj čas,

mimoto

 
Je otázka, o kódování styl, ne C jazyk.I použití stejného jména v tzv. functionas.Více o kódování stylu lze nalézt na internetu.

Tomáš

 

Welcome to EDABoard.com

Sponsor

Back
Top