Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
484 views
in Technique[技术] by (71.8m points)

c - Why is "typedef struct foo foo;" considered harmful?

In typedef and struct namespaces in C vs C++, one of the comments seems to imply that exposing some struct foo is preferable to using typedef along the lines of...

typedef struct foo foo;

...and then using foo instead of struct foo throughout the API.

Are there any downsides to the latter variant?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

The only downside(*) is that it hides the fact that foo is a struct, and not an alias for some builtin type.

Note(*): it's matter of taste whether this is a downside for you.

  • It's good for total opaqueness (see the first comment below).
  • To see why some people think this is a downside, check the linux kernel coding style (typedefs chapter).

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...