Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C > Re: previous de...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 6 of 13 Topic 26048 of 26955
Post > Topic >>

Re: previous declaration of Table was here / conflicting types for

by Ben Bacarisse <ben.usenet@[EMAIL PROTECTED] > May 6, 2008 at 12:32 PM

"Michael.Z" <zhangqiuyuan@[EMAIL PROTECTED]
> writes:

> The Table.c was required to be implemented as generic type.  If I am
> right, Table is declared as void * in header file, the reason is that,
> when used later on, it can be casted to any other type of pointers.
>
> The implementation of Table in Table.c was defined as pointer to
> struct Table, because I need to implement the members of Table.
>
> My professor told us, void * in header indicates a generic type.
> He has some sample codes where List was typedef'd void pointer but the
> definition was struct List Pointer:

First, the more common way to "hide the implementation" is simply to
declare your functions as using a 'struct Table *' (as has already
been explained by Flash Gordon).

Secondly, this does not stop you writing generic functions that have a
'void *' parameter.  You can pass a 'struct Table *' where a 'void *'
is expected when is im****tant to do so.

There is no obvious advantage to making the Table generic (in that
sense) rather than simply hidden.  In fact there is a positive
*disadvantage* to doing that --  you loose all the type-checking.  It
is usually much better to stick with hidden (incomplete) struct
pointers right up to the point where you are *forced* to start using
'void *'.

Your professor may have a reason for doing this, but it does seem like
a wise choice from the sample you posted.

-- 
Ben.
 




 13 Posts in Topic:
previous declaration of Table was here / conflicting types for
"Michael.Z" <  2008-05-03 00:22:21 
Re: previous declaration of Table was here / conflicting types
ade ishs <no-spam@[EMA  2008-05-03 19:34:39 
Re: previous declaration of Table was here / conflicting types
Flash Gordon <spam@[EM  2008-05-03 10:32:51 
Re: previous declaration of Table was here / conflicting types f
"Michael.Z" <  2008-05-05 19:33:26 
Re: previous declaration of Table was here / conflicting types f
Nick Keighley <nick_ke  2008-05-06 02:21:25 
Re: previous declaration of Table was here / conflicting types f
Ben Bacarisse <ben.use  2008-05-06 12:32:13 
Re: previous declaration of Table was here / conflicting types f
"Michael.Z" <  2008-05-07 01:05:08 
Re: previous declaration of Table was here / conflicting types f
Flash Gordon <spam@[EM  2008-05-07 19:14:36 
Re: previous declaration of Table was here / conflicting types f
CBFalconer <cbfalconer  2008-05-07 12:01:43 
Re: previous declaration of Table was here / conflicting types f
"Michael.Zhang"  2008-05-09 02:40:34 
Re: previous declaration of Table was here / conflicting types f
Chris Torek <nospam@[E  2008-05-10 05:43:46 
Re: previous declaration of Table was here / conflicting types f
Ben Bacarisse <ben.use  2008-05-10 01:19:38 
Re: previous declaration of Table was here / conflicting types f
"Michael.Zhang"  2008-05-10 20:11:23 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Thu Jul 24 2:29:02 CDT 2008.