
Bill Wood wrote:
Could you briefly elaborate on what you mean by "hybrid variables"?
According to Google, hybrid in genetics means "The offspring of genetically dissimilar parents or stock, especially the offspring produced by breeding plants or animals of different varieties, species, or races." It's kind of like that - but for variables. The typical example in C is: mem = malloc(1024) Malloc returns 0 to indicate that memory cannot be allocated, or a memory address if it can. The variable mem is a so-called hybrid variable; it crunches together 2 different concepts: a boolean value (could I allocate memory?) and an address value (what is the address where I can find my allocated memory). It's considered a bad idea because it makes it easy for programmers to use the value inappropriately - witness the number of programmers who pass in 0 as a memory location. The suggested solution is to give each variable one meaning. So, I could define, say, a variable called success, and do something like mem =improved_ malloc(1024, & success) if(success) { do_something(mem) } else { oops() } Admittedly, there's nothing to force the programmer to actually check the success variable; but at least the idea is that everything is much more explicit, and the programmer is less likely to shoot himself in the foot. ___________________________________________________________ Yahoo! Messenger - NEW crystal clear PC to PC calling worldwide with voicemail http://uk.messenger.yahoo.com