Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C Programming (http://www.velocityreviews.com/forums/f42-c-programming.html)
-   -   What's the difference between function declaration and function prototype? (http://www.velocityreviews.com/forums/t949201-whats-the-difference-between-function-declaration-and-function-prototype.html)

Hill Pang 08-07-2012 06:01 AM

What's the difference between function declaration and function prototype?
 
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.

Keith Thompson 08-07-2012 06:16 AM

Re: What's the difference between function declaration and function prototype?
 
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"

Varun Tewari 08-07-2012 05:30 PM

Re: What's the difference between function declaration and function prototype?
 
There a little difference, but in modern context, they are same.

Eric Sosman 08-07-2012 05:55 PM

Re: What's the difference between function declaration and functionprototype?
 
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

karora129@gmail.com 08-16-2012 09:37 AM

Re: What's the difference between function declaration and function prototype?
 
prototype and declaration both are same

Keith Thompson 08-16-2012 09:43 AM

Re: What's the difference between function declaration and function prototype?
 
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"

James Kuyper 08-16-2012 11:48 AM

Re: What's the difference between function declaration and functionprototype?
 
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

Nick Keighley 08-16-2012 12:18 PM

Re: What's the difference between function declaration and function prototype?
 
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.

> *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.


<snip>

Phil Carmody 09-05-2012 08:21 AM

Re: What's the difference between function declaration and function prototype?
 
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)


All times are GMT. The time now is 06:46 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.