Nonstandard GCC features

Michel Fortin michel.fortin at michelf.com
Fri Nov 21 05:34:37 PST 2008


On 2008-11-21 07:43:47 -0500, bearophile <bearophileHUGS at lycos.com> said:

> Just found this cute article on Reddit: "GCC hacks in the Linux 
> kernel", by M. Tim Jones:
> http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/index.html
> 
> Here are few comparisons between those featuers are D ones.
> 
> The range syntax that can be used in switch statements and array 
> defintions is cute:
> 1 ... 7
> D2 already has a range syntax, it just needs to be extended for other 
> purposes (and adding a stride too may be useful, but it's less 
> important).

I've wanted that range thing in switch statements some time ago while 
writing a parser working with character ranges.


> Zero-length arrays are available in D, but the following code (used in 
> C to define a struct with ane or two variable-length arrays) can't be 
> used, because of array bound controls:
> struct iso_block_store {
>         atomic_t refcount;
>         size_t data_size;
>         quadlet_t data[0];
> };

Just use data.ptr if you want to escape the bound checks.

But what would be really great is some way to parametrize the length of 
data to data_size. That's not very high on my wish list though.


> This looks interesting for D too, from the article:
> __attribute__((warn_unused_result)) forces the compiler to check that 
> all callers check the result of the function. This ensures that callers 
> are properly validating the function result so that they can handle the 
> appropriate errors.

Do we need that when we have exceptions in D?


-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/




More information about the Digitalmars-d mailing list