C2 forum
General Category => General Discussion => Topic started 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--
-
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..
-
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--
-
Since C2 uses the clang preprocessor, all normal C preprocessor command should work. This is more a by-effect than
a real design target..