C2 forum

General Category => General Discussion => Topic started by: shiv on February 15, 2017, 06:43:38 PM

Title: Diffs to C99 and C11
Post by: shiv on February 15, 2017, 06:43:38 PM
I have tried reading through the documentation carefully but I cannot find out what are the precise "evolutions/omissions" over existing standards.

I know that there seems to be discussions about C-style macros. Will the _Generic macro, or something equivalent, be supported? These are quite essential for numerical codes that seek to re-use code over single, double, single complex and double complex numbers. More generically, if macros and #include's are removed, will some other facility be provided for generic programming?

Also, will variable length arrays and multi-dimensional arrays be supported?

Finally, this is outside the standard, what about OpenMP directives?

Thanks.
--shiv--
Title: Re: Diffs to C99 and C11
Post by: bas on February 16, 2017, 04:50:44 PM
There is a page called 'Changes from C' in the documentation that highlights some big changes. Otherwise
there are many smaller changes. Just look at some code fragments in the examples/ dir and the unit tests.

Macros in C/C++ work by including (copy-pasting) a header file into a .c/cpp file. The preprocessor then does
textual replacements. This is very flexible, but also prevents the compiler from many useful diagnostics
(or at least makes it very hard). There is a post about macros on the forum that explains the different use
cases for macros.

Variable length arrays are supported in function scope (just like newer C standards). At global scope, C2 allows
'adding' items from different parts of the code, but essentially at runtime these are fixed size. Multi-dimensional arrays
are supported just like C/C++.

OpenMP is not in the planning yet..

Title: Re: Diffs to C99 and C11
Post by: shiv on March 07, 2017, 12:14:54 AM
Looking through the source I see that "#define" is allowed. I also tried and noticed that "#include" is allowed too. Just with those two I can get some of functor like generics that I need.
--shiv--
Title: Re: Diffs to C99 and C11
Post by: admin on March 13, 2017, 08:05:37 AM
Since C2 uses the clang preprocessor, all normal C preprocessor command should work. This is more a by-effect than
a real  design target..