structure paddind

C

Chris Dollin

amit said:
how to stop or change structure padding ???

(a) See your local implementation manual for the implementation-specific
way to do this.

(b, preferred if plausible) Write your code so that it doesn't care about
structure padding even if there is any.

Why do you think you want to stop or change structure padding?
 
J

jacob navia

Chris said:
(a) See your local implementation manual for the implementation-specific
way to do this.

(b, preferred if plausible) Write your code so that it doesn't care about
structure padding even if there is any.

Why do you think you want to stop or change structure padding?

We had a discussion about the

#pragma pack

construct in this group several weeks ago. Google for it, since
we gave a detailed discussion about that construct in many different
situations and compilers
 
C

Chris Dollin

jacob said:
We had a discussion about the

#pragma pack

construct in this group several weeks ago. Google for it, since
we gave a detailed discussion about that construct in many different
situations and compilers

Regardless of any historical discussion about #pragmapack, I'd still
like to hear the OP's reasons, since their concerns might be satisfiable
without recourse to semi-portable assistance (deLameters should be enough).
 
C

CBFalconer

jacob said:
We had a discussion about the #pragma pack construct in this
group several weeks ago. Google for it, since we gave a detailed
discussion about that construct in many different situations and
compilers

Once more, Jacob is off-topic and not portable. See the following
extract from N869:

6.10.6 Pragma directive

Semantics

[#1] A preprocessing directive of the form

# pragma pp-tokens-opt new-line

where the preprocessing token STDC does not immediately
follow pragma in the directive (prior to any macro
replacement)136) causes the implementation to behave in an
implementation-defined manner. The behavior might cause
translation to fail or cause the translator or the resulting
program to behave in a non-conforming manner. Any such
pragma that is not recognized by the implementation is
ignored.

____________________

136An implementation is not required to perform macro
replacement in pragmas, but it is permitted except for in
standard pragmas (where STDC immediately follows pragma).
If the result of macro replacement in a non-standard
pragma has the same form as a standard pragma, the
behavior is still implementation-defined; an
implementation is permitted to behave as if it were the
standard pragma, but is not required to.


[#2] If the preprocessing token STDC does immediately follow
pragma in the directive (prior to any macro replacement),
then no macro replacement is performed on the directive, and
the directive shall have one of the following forms whose
meanings are described elsewhere:

#pragma STDC FP_CONTRACT on-off-switch
#pragma STDC FENV_ACCESS on-off-switch
#pragma STDC CX_LIMITED_RANGE on-off-switch

on-off-switch: one of
ON OFF DEFAULT
 
K

Keith Thompson

jacob navia said:
We had a discussion about the

#pragma pack

construct in this group several weeks ago. Google for it, since
we gave a detailed discussion about that construct in many different
situations and compilers

As you know, and as the OP perhaps doesn't know, #pragma pack is not
defined by the standard, is implemented differently by different
implementations, is not implemented at all by other implementations,
and will necessarily make any code that uses it non-portable (unless
all uses of it are protected by #ifdef).

Using #pragma pack might turn out to be the perfect solution to the
OP's problem, but recommending it without even mentioning the caveats
is irresponsible.

And of course it can cause struct members to be misaligned, which can
slow down access to such members.

Depending on what the OP is trying to do, reordering the member
declarations so the larger members are declared first might solve the
problem without any of the drawbacks of #pragma pack.

See also question 2.12 in the comp.lang.c FAQ,
<http://www.c-faq.com/>, and follow the links to other relevant
questions. <http://www.c-faq.com/struct/align.esr.html> has some good
information.
 
R

Richard Tobin

Keith Thompson said:
Using #pragma pack might turn out to be the perfect solution to the
OP's problem, but recommending it without even mentioning the caveats
is irresponsible.

He pointed the poster to a previous discussion of it. Does he have
to repeat it all too?

-- Richard
 
J

jacob navia

Richard said:
He pointed the poster to a previous discussion of it. Does he have
to repeat it all too?

-- Richard

It was a deep discussion with pros, cons, examples
from weird architectures, etc. I did not recommend anything
I just pointed to that discussion, as you say.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,431
Messages
2,571,678
Members
48,796
Latest member
Greg L.

Latest Threads

Top