Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

typedef struct

170 views
Skip to first unread message

John McDermick

unread,
Oct 15, 2011, 2:38:11 PM10/15/11
to
Hello,

If I have this definition in a header file:

typedef struct A
{
int test;
} B;

What exactly is A and what is B ?

What does it mean when I declare like this:

typedef struct A
{
int test;
};

And what does it mean when I declare like this:

typedef struct
{
int test;
} B;

Eric Sosman

unread,
Oct 15, 2011, 3:40:07 PM10/15/11
to
On 10/15/2011 2:38 PM, John McDermick wrote:
> Hello,
>
> If I have this definition in a header file:
>
> typedef struct A
> {
> int test;
> } B;
>
> What exactly is A and what is B ?

`A' is a "struct tag," something that distinguishes one particular
kind of struct from other kinds. The combination `struct A' names the
type of that particular kind of struct, so you can use that name in
other contexts like `struct A instance;' to declare a variable of that
struct type or `struct A *pointer;' to declare a variable that points
to objects of that type. `A' by itself means nothing in C; the rules
in C++ are different.

`B' is an alias for the type `struct A', and can be used wherever
`struct A' could. So `B instance;' declares a variable of the struct
type, and `B *pointer;' declares a variable that can point to it. `B'
and `struct A' are interchangeable.

> What does it mean when I declare like this:
>
> typedef struct A
> {
> int test;
> };

It means you declare `struct A' and `A' with the meanings as above.
Then you start to declare an alias for `struct A' but never provide the
alias' name. I'm not sure the Standard requires a diagnostic for this
vacuous attempt at an alias, but compilers are likely to warn about it
in any case. It's a lot like writing `typedef float;' and never giving
the name that you want to use as an alias for `float'.

> And what does it mean when I declare like this:
>
> typedef struct
> {
> int test;
> } B;

Again you declare a struct type, but this one has no name of its
own: There is no way to complete `struct ???' to name the type of
this struct. However, you also declare `B' as an alias for that
anonymous struct type, so you can still write `B instance;' and
`B *pointer;'. So, `B' is an alias for a type that has no true name
of its own, but `B' will serve as a perfectly good substitute.

--
Eric Sosman
eso...@ieee-dot-org.invalid

BartC

unread,
Oct 15, 2011, 3:42:01 PM10/15/11
to


"John McDermick" <johnth...@gmail.com> wrote in message
news:ff89df4d-151e-4537...@n13g2000vbv.googlegroups.com...
> Hello,
>
> If I have this definition in a header file:
>
> typedef struct A
> {
> int test;
> } B;
>
> What exactly is A and what is B ?

It gets more confusing when you write it like this:

typedef struct A
{
int test;
} A;

Both A and A can co-exist, because the first A (A in your example) needs to
be used as:

struct A x;

while the second A (B in your example) can be written like this:

A x;

> What does it mean when I declare like this:
>
> typedef struct A
> {
> int test;
> };

This one puzzles me too; adding the 'typedef' doesn't buy you much more than
just writing struct A{int test;}. In fact, gcc will complain about it so it
agrees with me!

> And what does it mean when I declare like this:
>
> typedef struct
> {
> int test;
> } B;

This declares a type alias for struct{int test;}, called B.

--
Bartc

Keith Thompson

unread,
Oct 15, 2011, 7:26:51 PM10/15/11
to
Eric has ably answered your question.

Opinions differ on this, but personally I don't feel the need for a
typedef at all. I'd just declare the type as

struct A {
int test;
};

and then refer to it as "struct A". There's no real need to use a
typedef to give the type another name; it already has a perfectly good
one.

(The counterargument is that many people like to have a one-word name
for the type.)

You can also use the same identifier for both the tag and the typedef:

typedef struct A {
int test;
} A;

You can then refer to the type either as "struct A" or as "A". Since
struct tags are in a different namespace than typedef names (since the
tag can only appear immediately after the keyword "struct', and the
typedef name never can), there's no conflict.

(Note that C++ makes the struct tag usable directly as a type name; even
without the typedef, you can refer to the type as just "A". C doesn't
do this.)

--
Keith Thompson (The_Other_Keith) ks...@mib.org <http://www.ghoti.net/~kst>
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"

John McDermick

unread,
Oct 16, 2011, 12:48:10 PM10/16/11
to
Awesome and easy to understand explanations!

Thank you to all of you :o)

Kulin

unread,
May 31, 2012, 3:10:16 PM5/31/12
to
Keith Thompson <ks...@mib.org> wrote:

> John McDermick <johnth...@gmail.com> writes:
> > If I have this definition in a header file:
> >
> > typedef struct A
> > {
> > int test;
> > } B;
> >
> > What exactly is A and what is B ?

What if I want to create a pointer to the struct inside the struct?

typedef struct A {
A *p1; /* not allowed */
B *p2; /* not allowed */
} B;

This gives compilation errors. Is it possible to create a pointer to the
struct being defined, within the struct, using the original typedef and
thereby not having to code 'struct' to define the pointer?

> struct A {
> struct A *p;
> };


> and then refer to it as "struct A". There's no real need to use a
> typedef to give the type another name; it already has a perfectly good
> one.
>
> (The counterargument is that many people like to have a one-word name
> for the type.)

My desire is simply to avoid having to create pointers as struct * inside
the structure. Other than that I would tend to agree.



Eric Sosman

unread,
May 31, 2012, 3:14:00 PM5/31/12
to
typedef struct A B; // "incomplete type" declaration
struct A { // "completes" the type `struct A'
int test;
B *p1;
};

--
Eric Sosman
eso...@ieee-dot-org.invalid

Xavier Roche

unread,
May 31, 2012, 3:14:32 PM5/31/12
to
Le 31/05/2012 21:10, Kulin a écrit :
> What if I want to create a pointer to the struct inside the struct?
> typedef struct A {
> A *p1; /* not allowed */
> B *p2; /* not allowed */
> } B;

Hum, why don't you first define the type incompletely ?

typedef struct A A;
struct A {
A *p1;
A *p2;
};

Keith Thompson

unread,
May 31, 2012, 5:24:30 PM5/31/12
to
Kulin <rema...@reece.net.au> writes:
[...]
> What if I want to create a pointer to the struct inside the struct?
>
> typedef struct A {
> A *p1; /* not allowed */
> B *p2; /* not allowed */
> } B;
>
> This gives compilation errors. Is it possible to create a pointer to the
> struct being defined, within the struct, using the original typedef and
> thereby not having to code 'struct' to define the pointer?
[snip]
> My desire is simply to avoid having to create pointers as struct * inside
> the structure. Other than that I would tend to agree.

Why do you want to avoid using the "struct" keyword?

But if you want to use a typedef, there's no real need to use different
identifiers for the struct tag and the typedef name. This:

typedef struct A A;

is perfectly valid and doesn't create any potential ambiguity. Or at
least use a consistent convention, like:

typedef struct A_ A;

--
Keith Thompson (The_Other_Keith) ks...@mib.org <http://www.ghoti.net/~kst>
Will write code for food.

Nomen Nescio

unread,
May 31, 2012, 8:50:38 PM5/31/12
to
Thank you very much!

Carl

Nomen Nescio

unread,
Jun 1, 2012, 4:20:05 AM6/1/12
to
Keith Thompson <ks...@mib.org> wrote:

> Kulin <rema...@reece.net.au> writes:
> [...]
> > What if I want to create a pointer to the struct inside the struct?
> >
> > typedef struct A {
> > A *p1; /* not allowed */
> > B *p2; /* not allowed */
> > } B;
> >
> > This gives compilation errors. Is it possible to create a pointer to the
> > struct being defined, within the struct, using the original typedef and
> > thereby not having to code 'struct' to define the pointer?
> [snip]
> > My desire is simply to avoid having to create pointers as struct * inside
> > the structure. Other than that I would tend to agree.
>
> Why do you want to avoid using the "struct" keyword?

If you have a struct with several self-referential pointers it looks
cluttered to have to say struct struct struct. Really no more than that.

> But if you want to use a typedef, there's no real need to use different
> identifiers for the struct tag and the typedef name. This:
>
> typedef struct A A;
>
> is perfectly valid and doesn't create any potential ambiguity. Or at
> least use a consistent convention, like:
>
> typedef struct A_ A;

Thanks a lot!

Carl
















Keith Thompson

unread,
Jun 1, 2012, 2:45:33 PM6/1/12
to
Nomen Nescio <nob...@dizum.com> writes:
> Keith Thompson <ks...@mib.org> wrote:
>> Kulin <rema...@reece.net.au> writes:
[...]
>> Why do you want to avoid using the "struct" keyword?
>
> If you have a struct with several self-referential pointers it looks
> cluttered to have to say struct struct struct. Really no more than that.
[...]
> Carl

My question was directed to the previous poster, Kulin. Are you posting
under multiple names?

Ian Collins

unread,
Jun 1, 2012, 3:52:21 PM6/1/12
to
On 06/ 2/12 06:45 AM, Keith Thompson wrote:
> Nomen Nescio<nob...@dizum.com> writes:
>> Keith Thompson<ks...@mib.org> wrote:
>>> Kulin<rema...@reece.net.au> writes:
> [...]
>>> Why do you want to avoid using the "struct" keyword?
>>
>> If you have a struct with several self-referential pointers it looks
>> cluttered to have to say struct struct struct. Really no more than that.
> [...]
>> Carl
>
> My question was directed to the previous poster, Kulin. Are you posting
> under multiple names?

He or she certainly does on other groups and mail lists.

--
Ian Collins

Ike Naar

unread,
Jun 1, 2012, 5:54:00 PM6/1/12
to
On 2012-06-01, Keith Thompson <ks...@mib.org> wrote:
> Nomen Nescio <nob...@dizum.com> writes:
>> Keith Thompson <ks...@mib.org> wrote:
>>> Kulin <rema...@reece.net.au> writes:
> [...]
>>> Why do you want to avoid using the "struct" keyword?
>>
>> If you have a struct with several self-referential pointers it looks
>> cluttered to have to say struct struct struct. Really no more than that.
> [...]
>> Carl
>
> My question was directed to the previous poster, Kulin. Are you posting
> under multiple names?

Remember "George Orwell", "Borked Pseudo Mailed", "Han from China" et al. ?

BartC

unread,
Jun 1, 2012, 6:36:45 PM6/1/12
to
"Keith Thompson" <ks...@mib.org> wrote in message
news:ln7gvqh...@nuthaus.mib.org...
> Nomen Nescio <nob...@dizum.com> writes:
>> Keith Thompson <ks...@mib.org> wrote:
>>> Kulin <rema...@reece.net.au> writes:
> [...]
>>> Why do you want to avoid using the "struct" keyword?
>>
>> If you have a struct with several self-referential pointers it looks
>> cluttered to have to say struct struct struct. Really no more than that.
> [...]
>> Carl
>
> My question was directed to the previous poster, Kulin. Are you posting
> under multiple names?

"Nomen Nescio" said on another group that he/she uses 'anonymous remailers'.
But with no warning that they will be using different names, and no
signature on the posts either, things get confusing.

--
Bartc

Fritz Wuehler

unread,
Jun 2, 2012, 5:31:06 PM6/2/12
to
Keith Thompson <ks...@mib.org> wrote:

> Nomen Nescio <nob...@dizum.com> writes:
> > Keith Thompson <ks...@mib.org> wrote:
> >> Kulin <rema...@reece.net.au> writes:
> [...]
> >> Why do you want to avoid using the "struct" keyword?
> >
> > If you have a struct with several self-referential pointers it looks
> > cluttered to have to say struct struct struct. Really no more than that.
> [...]
> > Carl
>
> My question was directed to the previous poster, Kulin. Are you posting
> under multiple names?

No, I'm posting as myself but it gets posted through various remailers!

Thanks for the help!

Carl

Keith Thompson

unread,
Jun 2, 2012, 9:30:57 PM6/2/12
to
Fritz Wuehler <fr...@spamexpire-201206.rodent.frell.theremailer.net>
writes:
> Keith Thompson <ks...@mib.org> wrote:
>> Nomen Nescio <nob...@dizum.com> writes:
>> > Keith Thompson <ks...@mib.org> wrote:
>> >> Kulin <rema...@reece.net.au> writes:
>> [...]
>> >> Why do you want to avoid using the "struct" keyword?
>> >
>> > If you have a struct with several self-referential pointers it looks
>> > cluttered to have to say struct struct struct. Really no more than that.
>> [...]
>> > Carl
>>
>> My question was directed to the previous poster, Kulin. Are you posting
>> under multiple names?
>
> No, I'm posting as myself but it gets posted through various remailers!
>
> Thanks for the help!

Would you consider adding some consistent header line to all your posts
so we can tell it's you?

张源 西北工业大学

unread,
Jun 8, 2012, 1:02:14 PM6/8/12
to
can i understand in this way:the ambiguity of struct A is B ?

> struct A { // "completes" the type `struct A'
> int test;
> B *p1;
> };



>
> --
> Eric Sosman
> eso...@ieee-dot-org.invalid


Eric Sosman

unread,
Jun 8, 2012, 1:20:16 PM6/8/12
to
On 6/8/2012 1:02 PM, 张源 西北工业大学 wrote:
> On Friday, June 1, 2012 3:14:00 AM UTC+8, Eric Sosman wrote:
>> On 5/31/2012 3:10 PM, Kulin wrote:
>>> [...]
>>> My desire is simply to avoid having to create pointers as struct * inside
>>> the structure. Other than that I would tend to agree.
>>
>> typedef struct A B; // "incomplete type" declaration
>
> can i understand in this way:the ambiguity of struct A is B ?

I don't know what you mean by "the ambiguity of." The line
actually says two things:

1) A type named `struct A' exists. The type is "incomplete,"
meaning that there is no information about the number of bytes a
`struct A' requires or what its member elements are. Perhaps the
code will provide such details later to "complete" the type, but
no details are available yet.

2) `B' is an alias for `struct A'. `B' and `struct A' can
be used interchangeably; both refer to the exact same type. Since
`struct A' is an incomplete type, `B' is also an incomplete type
(because it is, in fact, the same type).

>> struct A { // "completes" the type `struct A'
>> int test;
>> B *p1;
>> };

These lines "complete" the `struct A' type by describing the
struct elements. Since `struct A' is now complete, its alias `B'
is also complete: As before, `struct A' and `B' mean the same thing.

--
Eric Sosman
eso...@ieee-dot-org.invalid

张源 西北工业大学

unread,
Jun 8, 2012, 1:20:03 PM6/8/12
to
can you explain why we can typedef incompletely?
such as some basic implementation on computer for this incompletely typedef?

(sorry for my awful English)

张源 西北工业大学

unread,
Jun 8, 2012, 1:27:39 PM6/8/12
to
thanks a lot,sorry for my awful english,since i'm a Chinese.
can you exlain why the code below are forbidden ?

Eric Sosman

unread,
Jun 8, 2012, 1:32:26 PM6/8/12
to
On 6/8/2012 1:27 PM, 张源 西北工业大学 wrote:
> [...]
> thanks a lot,sorry for my awful english,since i'm a Chinese.
> can you exlain why the code below are forbidden ?
> typedef struct A {
> A *p1; /* not allowed */

`struct A' is the name of a type, but `A' alone is not. The compiler
has no idea at all what `p1' should point to.

> B *p2; /* not allowed */

`B' means nothing (yet), because `B' has not been declared. The
compiler has no idea what `p2' should point to.

> } B;
>
> This gives compilation errors.

Yes.

--
Eric Sosman
eso...@ieee-dot-org.invalid

张源 西北工业大学

unread,
Jun 8, 2012, 1:37:46 PM6/8/12
to
On Saturday, June 9, 2012 1:32:26 AM UTC+8, Eric Sosman wrote:
Thank you for your patience .I'm new to C.
Can you give me some advice?
blog or maillist?
Thank you,this is first time i contact with others in google group.I like the atmosphere here.




Eric Sosman

unread,
Jun 8, 2012, 1:55:22 PM6/8/12
to
On 6/8/2012 1:37 PM, 张源 西北工业大学 wrote:
> [...]
> Thank you for your patience .I'm new to C.
> Can you give me some advice?
> blog or maillist?
> Thank you,this is first time i contact with others in google group.I like the atmosphere here.

This is not "Google group;" this is Usenet. Usenet has been around since
Google's founders were three years old. Their company does many things well,
but the "Google Groups" interface to Usenet is not among their successes.

If you are new to C, get yourself a good book. "The C Programming
Language"
by Kernighan and Ritchie is a good one if you already have experience
with other
programming languages. (It will teach you C, but will not teach you how
to write
programs.) Other books exist, some good and some not. I do not know whether
there are good C books in Chinese.

Another useful source is the comp.lang.c Frequently Asked Questions
(FAQ)
page at <http://www.c-faq.com/>. The coverage is somewhat spotty since
it tries
to address question that arise frequently, and some answers are a little
dated.
Nonetheless, it's an excellent place to look before posting a question.

There's also a Usenet group called "alt.comp.lang.learn.c-c++". I know
nothing about its quality or usefulness, but the title looks helpful.
There might
be some Chinese-language C groups or forums; I don't know.

--
Eric Sosman
eso...@ieee-dot-org.invalid

Zhang Yuan

unread,
Jun 8, 2012, 2:22:10 PM6/8/12
to
On Saturday, June 9, 2012 1:55:22 AM UTC+8, Eric Sosman wrote:
Thank you.
the quality of this usenet is higher than those in china .
chinese students prefer to read american books rather than natives.
i'm reading c primer plus now.
thank you,
It's a pitty that cfaq is blocked in china. - -!

James Kuyper

unread,
Jun 8, 2012, 2:31:00 PM6/8/12
to
Being able to typedef incompletely is just a side effect of being able
to declare an incomplete struct type:

struct incomplete_type;
struct another_incomplete_type *pointer_to_incomplete_type;

The key point is that for some purposes there's no need to know the
actual type of the struct. This is feasible because the standard
requires that all pointers to structs have the same representation and
alignment requirements, so you don't need to tell the compiler the exact
type, so long as all you're doing is receiving pointers to the type, and
passing them on to other functions that do know what the exact type is.

James Kuyper

unread,
Jun 8, 2012, 2:35:04 PM6/8/12
to
On 06/08/2012 02:22 PM, Zhang Yuan wrote:
...
> It's a pitty that cfaq is blocked in china. - -!

What in the world? Why do they find objectionable about the cfaq? I
known that their censors are crazy, I'm just not clear on the particular
brand of craziness that produced that decision.

Zhang Yuan

unread,
Jun 8, 2012, 2:41:40 PM6/8/12
to
Me neither.use some software I can go to cfaq.
This is not difficult for students in china .
pitty.sometimes ,i even can't go to google group.
Message has been deleted
Message has been deleted

Zhang Yuan

unread,
Jun 8, 2012, 2:08:52 PM6/8/12
to
On Saturday, June 9, 2012 1:55:22 AM UTC+8, Eric Sosman wrote:
Thank you.This Usenet is more helpful than those in china.
Students in china usually read books translated from English .
I'm reading c primer plus in Chinese.

Thank you!

James Kuyper

unread,
Jun 8, 2012, 3:10:59 PM6/8/12
to
> On Saturday, June 9, 2012 2:31:00 AM UTC+8, James Kuyper wrote:
>> On 06/08/2012 01:20 PM, 张源 西北工业大学 wrote:
...
>> Being able to typedef incompletely is just a side effect of being able
>> to declare an incomplete struct type:
>>
>> struct incomplete_type;
>> struct another_incomplete_type *pointer_to_incomplete_type;
>>
>> The key point is that for some purposes there's no need to know the
>> actual type of the struct. This is feasible because the standard
>> requires that all pointers to structs have the same representation and
>> alignment requirements, so you don't need to tell the compiler the exact
>> type, so long as all you're doing is receiving pointers to the type, and
>> passing them on to other functions that do know what the exact type is.
>
> thank you.i know a lot .
> what do the same representation and alignment requirements mean?

Every C object is stored in a series of bits; except for bit-fields,
those bits usually fill up entire bytes. Every C type has an
implementation-dependent mapping which connects bit patterns to values.
That mapping is called the representation used by that type. Unsigned
integer types have a simple binary representation. C signed integers
have one of three types of representation: 1's complement, 2's
complement, and sign-magnitude. They all store positive numbers the same
way as the corresponding unsigned type, they differ only in the way they
represent negative values. The C standard imposes no requirements on the
representation of floating point types, but does say that if
__STDC_IEC_559__ is pre-defined by the implementation, the
implementation of floating point types should conform to the
requirements of annex F, which details the ways in which they are
required to conform to the requirements of IEEE/IEC 60559.

Byte ordering (bigendian, littleendian, middleendian, etc.) is also part
of the representation. The standard imposes no requirements on byte
ordering. The C standard also says nothing about how pointers are
represented. That's entirely up to the implementation. However, it does
require that, in some cases, pointers to different types must be
represented the same way.

The alignment of a type is a requirement that objects of that type be
allocated only at particular types of addresses. For instance, if an
object may only be allocated at even addresses, it has an alignment
requirement of 2. If it can only be allocated at addresses which are
integer multiples of 4, it has an alignment requirement of 4.

Zhang Yuan

unread,
Jun 8, 2012, 3:27:57 PM6/8/12
to
thank you!very useful for me!
your explanation is very explicit!

Keith Thompson

unread,
Jun 8, 2012, 5:22:20 PM6/8/12
to
Zhang Yuan <zhabgy...@gmail.com> writes:
> On Saturday, June 9, 2012 1:55:22 AM UTC+8, Eric Sosman wrote:
[...]
>> Another useful source is the comp.lang.c Frequently Asked
>> Questions (FAQ) page at <http://www.c-faq.com/>. The coverage is
>> somewhat spotty since it tries to address question that arise
>> frequently, and some answers are a little dated. Nonetheless, it's
>> an excellent place to look before posting a question.
[...]
> It's a pitty that cfaq is blocked in china. - -!

That's surprising.

The author of the FAQ is Steve Summit <s...@eskimo.com>. He might
be able to offer you some advice about how to obtain a copy.
(It's up to you to decide whether that's a good idea.)

Zhang Yuan

unread,
Jun 8, 2012, 9:28:49 PM6/8/12
to
I can connect to c-faq temporally now.
I found copy in ftp://ftp.eskimo.com/u/s/scs/C-faq
thank you!

Robert Miles

unread,
Jun 29, 2012, 5:29:44 PM6/29/12
to
On 6/1/2012 1:45 PM, Keith Thompson wrote:
> Keith Thompson (The_Other_Keith)ks...@mib.org <http://www.ghoti.net/~kst>
> Will write code for food.
> "We must do something. This is something. Therefore, we must do this."
> -- Antony Jay and Jonathan Lynn, "Yes Minister"

Looks like someone needs to answer "Pushing you out a rather high window
is something. Therefore, we must do that too."

Keith Thompson

unread,
Jun 29, 2012, 5:58:00 PM6/29/12
to
Any particular reason?

--
Keith Thompson (The_Other_Keith) ks...@mib.org <http://www.ghoti.net/~kst>

Robert Miles

unread,
Jul 1, 2012, 11:55:56 PM7/1/12
to
On 6/29/2012 4:58 PM, Keith Thompson wrote:
> Robert Miles <mil...@Usenet-News.net> writes:
>> On 6/1/2012 1:45 PM, Keith Thompson wrote:
>>> Keith Thompson (The_Other_Keith)ks...@mib.org <http://www.ghoti.net/~kst>
>>> Will write code for food.
>>> "We must do something. This is something. Therefore, we must do this."
>>> -- Antony Jay and Jonathan Lynn, "Yes Minister"
>>
>> Looks like someone needs to answer "Pushing you out a rather high window
>> is something. Therefore, we must do that too."
>
> Any particular reason?

Whoever that quote came from appears to need to think some more, and
this answer should help start that thinking.


Keith Thompson

unread,
Jul 2, 2012, 2:00:26 AM7/2/12
to
Perhaps you missed the fact that the quote is intended to be humorous.

--
Keith Thompson (The_Other_Keith) ks...@mib.org <http://www.ghoti.net/~kst>

James Kuyper

unread,
Jul 2, 2012, 7:12:07 AM7/2/12
to
On 07/02/2012 02:00 AM, Keith Thompson wrote:
> Robert Miles <mil...@Usenet-News.net> writes:
>> On 6/29/2012 4:58 PM, Keith Thompson wrote:
>>> Robert Miles <mil...@Usenet-News.net> writes:
>>>> On 6/1/2012 1:45 PM, Keith Thompson wrote:
>>>>> Keith Thompson (The_Other_Keith)ks...@mib.org <http://www.ghoti.net/~kst>
>>>>> Will write code for food.
>>>>> "We must do something. This is something. Therefore, we must do this."
>>>>> -- Antony Jay and Jonathan Lynn, "Yes Minister"
>>>>
>>>> Looks like someone needs to answer "Pushing you out a rather high window
>>>> is something. Therefore, we must do that too."
>>>
>>> Any particular reason?
>>
>> Whoever that quote came from appears to need to think some more, and
>> this answer should help start that thinking.
>
> Perhaps you missed the fact that the quote is intended to be humorous.

If was clearly intended to be humorous by the real-world author.
However, was it intended to be humorous by the fictional character who
spoke that line? Having seen only a little of that show, I had assumed
that it was an expression of bureaucratic incompetence so extreme that
"Pushing you out a rather high window" would have led to a significant
improvement in government efficiency. There did seem to be several
characters on that show who could plausibly have spoken such a line
without humorous intent.
--
James Kuyper
0 new messages