Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 14. červenec 2012, 09:42:08 Předmět: Warning při zarovnání |
|
|
Jde v g++ nějakou konkrétní strukturu označit, aby se generoval warning v případě, že tam došlo k zarovnání a struktura tím pádem má sizeof > suma sizeof všech členů? Chci to kvůli načítání souborů, protože tam zarovnání dělá hokej. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 14. červenec 2012, 10:51:31 Předmět: Re: Warning při zarovnání |
|
|
No nevím jak v g++, ale #pragma pack( push, 1 ) před definicí a #pragma pack(pop) by mohla pomoct.
EDIT: a nebylo by lepší tu strukturu navrhnout tak, aby na začátku byly největší (a tím i zarovnané) proměnné?
Navíc třeba na ARMu, který háže výjimky při nezarovnaném čtení, by to mohl být problém.
Poslední řešení je samozřejmě číst to po částech nebo do bufferu a rozkopírovat to. |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 14. červenec 2012, 11:42:22 Předmět: |
|
|
Jenže v souboru konkrétního formátu jsou ty datové položky za sebou přesně dané a mnohdy dost blbě zarovnané. Já ale nechci struktury pakovat. Chci si je ručně nasekat a kompilátor aby to po mně jen zkontroloval a případně varoval. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 14. červenec 2012, 13:16:57 Předmět: |
|
|
hmm mozno skus pozriet -Wpadded a -Wpacked
citace: |
-Wpacked
Warn if a structure is given the packed attribute, but the packed attribute has no effect on the layout or size of the structure. Such
structures may be mis-aligned for little benefit. For instance, in this code, the variable "f.x" in "struct bar" will be misaligned
even though "struct bar" does not itself have the packed attribute:
-Wpadded
Warn if padding is included in a structure, either to align an element of the structure or to align the whole structure. Sometimes
when this happens it is possible to rearrange the fields of the structure to reduce the padding and so make the structure smaller. |
_________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
|
|
Nemůžete odesílat nové téma do tohoto fóra Nemůžete odpovídat na témata v tomto fóru Nemůžete upravovat své příspěvky v tomto fóru Nemůžete mazat své příspěvky v tomto fóru Nemůžete hlasovat v tomto fóru
|
Powered by phpBB © 2001, 2005 phpBB Group
Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna