Add more STDC_ C11 compatible constants

mob
Christian Jullien 2019-01-12 10:41:56 +01:00
parent ecb90de4cc
commit d44d8cdf60
1 changed files with 56 additions and 29 deletions

View File

@ -1793,35 +1793,62 @@ reparse:
case TCC_OPTION_std:
if (*optarg == '=') {
if (strcmp(optarg, "=c11") == 0) {
tcc_undefine_symbol(s, "__STDC_VERSION__");
tcc_define_symbol(s, "__STDC_VERSION__", "201112L");
/*
* The integer constant 1, intended to indicate
* that the implementation does not support atomic
* types (including the _Atomic type qualier) and
* the <stdatomic.h> header.
*/
tcc_define_symbol(s, "__STDC_NO_ATOMICS__", "1");
/*
* The integer constant 1, intended to indicate
* that the implementation does not support complex
* types or the <complex.h> header.
*/
tcc_define_symbol(s, "__STDC_NO_COMPLEX__", "1");
/*
* The integer constant 1, intended to indicate
* that the implementation does not support the
* <threads.h> header.
*/
tcc_define_symbol(s, "__STDC_NO_THREADS__", "1");
/*
* __STDC_NO_VLA__, tcc supports VLA.
* The integer constant 1, intended to indicate
* that the implementation does not support
* variable length arrays or variably modied
* types.
*/
s->cversion = 201112;
tcc_undefine_symbol(s, "__STDC_VERSION__");
tcc_define_symbol(s, "__STDC_VERSION__", "201112L");
/*
* The integer constant 1, intended to indicate
* that the implementation does not support atomic
* types (including the _Atomic type qualier) and
* the <stdatomic.h> header.
*/
tcc_define_symbol(s, "__STDC_NO_ATOMICS__", "1");
/*
* The integer constant 1, intended to indicate
* that the implementation does not support complex
* types or the <complex.h> header.
*/
tcc_define_symbol(s, "__STDC_NO_COMPLEX__", "1");
/*
* The integer constant 1, intended to indicate
* that the implementation does not support the
* <threads.h> header.
*/
tcc_define_symbol(s, "__STDC_NO_THREADS__", "1");
/*
* __STDC_NO_VLA__, tcc supports VLA.
* The integer constant 1, intended to indicate
* that the implementation does not support
* variable length arrays or variably modied
* types.
*/
#if !defined(TCC_TARGET_PE)
/*
* An integer constant of the form yyyymmL (for
* example, 199712L). If this symbol is dened,
* then every character in the Unicode required
* set, when stored in an object of type
* wchar_t, has the same value as the short
* identier of that character.
*/
tcc_define_symbol(s, "__STDC_ISO_10646__", "201605L");
/*
* The integer constant 1, intended to indicate
* that values of type char16_t are UTF16
* encoded. If some other encoding is used, the
* macro shall not be dened and the actual
* encoding used is implementation dened.
*/
tcc_define_symbol(s, "__STDC_UTF_16__", "1");
/*
* The integer constant 1, intended to indicate
* that values of type char32_t are UTF32
* encoded. If some other encoding is used, the
* macro shall not be dened and the actual
* encoding used is implementationdened.
*/
tcc_define_symbol(s, "__STDC_UTF_32__", "1");
#endif /* !TCC_TARGET_PE */
s->cversion = 201112;
}
}
/*