[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] TinyCC -std=c2x support?
From: |
Elijah Stone |
Subject: |
Re: [Tinycc-devel] TinyCC -std=c2x support? |
Date: |
Fri, 18 Jun 2021 03:23:39 -0700 (PDT) |
On Fri, 18 Jun 2021, Christian Jullien wrote:
C evolves and supports new features over the time.
Do we want to support upcoming features like prototypes without
parameters (as in C++)?
I think it would be a good idea. As far as I can tell, the current c2x
draft (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2596.pdf) entails
the following compiler changes:
+ void f(int) {} (N2480)
+ single-argument _Static_assert (N2265) (already implemented)
+ get rid of k&r definitions (N2432)
+ also: void foo(){} is equivalent to void foo(void){}. The meaning of
void foo() (just a prototype) is unchanged + allow labels to precede
declarations (e.g. lb: int x;) (N2508) + 'true' and 'false' have type
bool (N2393)
- use of booleans in arithmetic expressions is 'deprecated'; consider
emiting warnings?
+ support binary literals (N2549, already supported as a gnu ext.
Actually as a 'tcc ext', but it's a gnu ext)
- u8'x' -> (unsigned char)'x' (N2418)
- u8"", U"" et al (from c11) are already not supported, need to add them
- mixed-type literal concatenation is now illegal (u"" U"" is an error;
"" u"" is fine though. See above) (N2594)
- Change rules about conversions of pointers to qualified arrays (N2607)
- [[attributes]] (N2335)
I've attached a patch implementing the changes marked '+'. Currently
they're all guarded behind -std=c2x, but perhaps that should be limited to
the backwards-incompatible ones?
-E
c2x.diff
Description: Text document