×
The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.
 
On 26/09/2008, at 5:36 AM, Erick Garske wrote:
I can see merit in both techniques.
Simon, did you mean to pass the structure by value or by reference?
By reference, hence the myEC_t * in the function interface and the  
use of "indirection operator" in my response.
I suppose that this would depend on whether or not the original value
from the structure needs to be preserved, or if myFunction modifies
the structure values, and those values need to be returned back to the
structure.
You could use that to decide whether value or reference is most  
appropriate but you also need to consider convention. When you pass a  
structure you are making the compiler copy it. Most C programmers  
would consider that to be unnecessary use of CPU. They'd also  
consider passing a structure by value to be very odd.
I'm not in that camp--there are advantages to passing structures by  
value but you need to KNOW that's what you intend. I'll even return  
structures from functions if it makes sense. I've also used  
structures to attempt to provide fixed-length field interfaces for OS  
APIs.
The thing to remember is that C passes EVERYTHING, except arrays, by  
value. The only reason C passes arrays by reference is that it  
doesn't really have arrays. It makes no distinction between an array  
subscript and a pointer offset. Thus an array an a pointer are the  
same thing in C and you can use the two types of syntax  
interchangeably. While this can occasionally prove useful it is also  
one of the crappy things about C. Because arrays are just pointers it  
does no bounds checking. Because it has no concept of fixed-length  
fields (they are just arrays of characters) you can reference beyond  
the declared size. In some C compilers you can even reference before  
the start of the field. Easy area to shoot yourself in the foot and  
overwrite storage you don't own.
Regards,
Simon Coulter.
--------------------------------------------------------------------
   FlyByNight Software         OS/400, i5/OS Technical Specialists
   
http://www.flybynight.com.au/
   Phone: +61 2 6657 8251   Mobile: +61 0411 091 400        /"\
   Fax:   +61 2 6657 8251                                   \ /
                                                             X
                 ASCII Ribbon campaign against HTML E-Mail  / \
--------------------------------------------------------------------
 
As an Amazon Associate we earn from qualifying purchases.