I can find some answer from web, but I can't find their definitions in the C99 standard so far.
Which page is it in?
Thanks in advance.
|
|
0
|
|
|
|
Reply
|
pangbw (11)
|
8/7/2012 6:01:15 AM |
|
Hill Pang <pangbw@gmail.com> writes:
> I can find some answer from web, but I can't find their definitions in
> the C99 standard so far.
>
> Which page is it in?
A function prototype is a *kind* of function declaration, one that
specifies the types of the parameters. A non-prototype declaration
has empty parentheses; it's also known as an old-style or K&R-style
declaration, and it's obsolescent.
The term "prototype" is defined in C99 and C11 6.2.1p2:
A *function prototype* is a declaration of a function that declares
the types of its parameters.
--
Keith Thompson (The_Other_Keith) kst-u@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"
|
|
0
|
|
|
|
Reply
|
kst-u (21460)
|
8/7/2012 6:16:35 AM
|
|
There a little difference, but in modern context, they are same.
|
|
0
|
|
|
|
Reply
|
tewari.varun (18)
|
8/7/2012 5:30:21 PM
|
|
On 8/7/2012 1:30 PM, Varun Tewari wrote:
> There a little difference, but in modern context, they are same.
That seems misleading. Keith Thompson quoted the actual
definition: "A function prototype is a declaration of a function
that declares the types of its parameters." The very definition
suggests the existence of function declarations that omit the
parameter types, and indeed if you look elsewhere in the Standard
you will find the rules for declaring functions this way.
By "in modern context," I imagine you mean something like
"always use prototypes, because a compiler that can't handle them
cannot possibly be `modern'." That's good advice: There is almost
never a reason to omit the parameter types, and I'd venture that
even when a reason exists it's probably a weak one. The Standard
describes non-prototype function declarations as an "obsolecent
feature" of the language, and even if it never gets all the way to
"obsolete" the message is clear: Don't Do That.
Still, when language feature F comes in forms F1 and F2, with
F1 discouraged and F2 strongly recommended, I think someone who
asks "What's the difference between F and F2" deserves more of an
answer than "Never mind."
--
Eric Sosman
esosman@ieee-dot-org.invalid
|
|
0
|
|
|
|
Reply
|
esosman2 (2945)
|
8/7/2012 5:55:13 PM
|
|
prototype and declaration both are same
|
|
0
|
|
|
|
Reply
|
karora129 (1)
|
8/16/2012 9:37:08 AM
|
|
karora129@gmail.com writes:
> prototype and declaration both are same
That's incorrect. As I wrote in my response last week:
The term "prototype" is defined in C99 and C11 6.2.1p2:
A *function prototype* is a declaration of a function that declares
the types of its parameters.
--
Keith Thompson (The_Other_Keith) kst-u@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"
|
|
0
|
|
|
|
Reply
|
kst-u (21460)
|
8/16/2012 9:43:57 AM
|
|
On 08/16/2012 05:37 AM, karora129@gmail.com wrote:
> prototype and declaration both are same
Are you claiming that "int func();" is a function prototype? Or are you
claiming that it's not a function declaration?
--
James Kuyper
|
|
0
|
|
|
|
Reply
|
jameskuyper (5140)
|
8/16/2012 11:48:37 AM
|
|
On Aug 7, 6:55=A0pm, Eric Sosman <esos...@ieee-dot-org.invalid> wrote:
> On 8/7/2012 1:30 PM, Varun Tewari wrote:
> > There a little difference, but in modern context, they are same.
<snip>
> =A0 =A0 =A0By "in modern context," I imagine you mean something like
> "always use prototypes, because a compiler that can't handle them
> cannot possibly be `modern'." =A0That's good advice: There is almost
> never a reason to omit the parameter types, and I'd venture that
> even when a reason exists it's probably a weak one.
maintaining K&R style code. Yes it's still about. It's only a couple
of years since I modified a K&R program.
> =A0The Standard
> describes non-prototype function declarations as an "obsolecent
> feature" of the language, and even if it never gets all the way to
> "obsolete" the message is clear: Don't Do That.
<snip>
|
|
0
|
|
|
|
Reply
|
nick_keighley_nospam (4574)
|
8/16/2012 12:18:23 PM
|
|
On 8/16/2012 8:18 AM, Nick Keighley wrote:
> On Aug 7, 6:55 pm, Eric Sosman <esos...@ieee-dot-org.invalid> wrote:
>> On 8/7/2012 1:30 PM, Varun Tewari wrote:
>
>>> There a little difference, but in modern context, they are same.
>
> <snip>
>
>> By "in modern context," I imagine you mean something like
>> "always use prototypes, because a compiler that can't handle them
>> cannot possibly be `modern'." That's good advice: There is almost
>> never a reason to omit the parameter types, and I'd venture that
>> even when a reason exists it's probably a weak one.
>
> maintaining K&R style code. Yes it's still about. It's only a couple
> of years since I modified a K&R program.
[...]
Until recently, the code I maintain had to be able to compile on HP-UX. The
C compiler that came with the system would recognize prototypes, and tell
you that you needed to buy their other C compiler if you needed prototype
support.
As I recall, there is now a gcc for HP-UX, eliminating that hurdle.
--
Kenneth Brody
|
|
0
|
|
|
|
Reply
|
kenbrody (1860)
|
8/16/2012 3:07:06 PM
|
|
Kenneth Brody <kenbrody@spamcop.net> writes:
> On 8/16/2012 8:18 AM, Nick Keighley wrote:
> > On Aug 7, 6:55 pm, Eric Sosman <esos...@ieee-dot-org.invalid> wrote:
> >> On 8/7/2012 1:30 PM, Varun Tewari wrote:
> >
> >>> There a little difference, but in modern context, they are same.
> >
> > <snip>
> >
> >> By "in modern context," I imagine you mean something like
> >> "always use prototypes, because a compiler that can't handle them
> >> cannot possibly be `modern'." That's good advice: There is almost
> >> never a reason to omit the parameter types, and I'd venture that
> >> even when a reason exists it's probably a weak one.
> >
> > maintaining K&R style code. Yes it's still about. It's only a couple
> > of years since I modified a K&R program.
> [...]
>
> Until recently, the code I maintain had to be able to compile on
> HP-UX. The C compiler that came with the system would recognize
> prototypes, and tell you that you needed to buy their other C compiler
> if you needed prototype support.
>
> As I recall, there is now a gcc for HP-UX, eliminating that hurdle.
I was using gcc in HP-UX back in the 90s. I know I had access to a range
between 2.5 and 2.95, which covers most of the decade.
Phil
--
> I'd argue that there is much evidence for the existence of a God.
Pics or it didn't happen.
-- Tom (/. uid 822)
|
|
0
|
|
|
|
Reply
|
thefatphil_demunged (1558)
|
9/5/2012 8:21:13 AM
|
|
|
9 Replies
37 Views
(page loaded in 0.253 seconds)
|