- 所有 tcc 文件/内容/宏改名为 pcc (tcc.c->pcc.c, tccelf.c->pccelf.c, libtcc.c->libpcc.c 等) - 支持架构: i386, x86_64, ARM, ARM64, RISC-V, C67 - 支持格式: PE, ELF, Mach-O, COFF - 完整预处理、代码生成、链接器、调试信息 - 构建成功: pcc.exe (x86_64 Windows) - 功能测试通过: 递归/结构体/浮点/switch/循环 - 自编译测试通过: pcc 可以编译自身
63 行
876 B
C
63 行
876 B
C
/* accept 'defined' as result of substitution */
|
|
|
|
----- 1 ------
|
|
#define AAA 2
|
|
#define BBB
|
|
#define CCC (defined ( AAA ) && AAA > 1 && !defined BBB)
|
|
#if !CCC
|
|
OK
|
|
#else
|
|
NOT OK
|
|
#endif
|
|
|
|
----- 2 ------
|
|
#undef BBB
|
|
#if CCC
|
|
OK
|
|
#else
|
|
NOT OK
|
|
#endif
|
|
|
|
----- 3 ------
|
|
#define DEFINED defined
|
|
#define DDD (DEFINED ( AAA ) && AAA > 1 && !DEFINED BBB)
|
|
#if (DDD)
|
|
OK
|
|
#else
|
|
NOT OK
|
|
#endif
|
|
|
|
----- 4 ------
|
|
#undef AAA
|
|
#if !(DDD)
|
|
OK
|
|
#else
|
|
NOT OK
|
|
#endif
|
|
|
|
----- 5 ------
|
|
line __LINE__
|
|
#define __LINE__ # ## #
|
|
line __LINE__
|
|
|
|
----- 10 ------
|
|
/* preprocessor numbers are (u)intmax_t */
|
|
#if -2147483648 < 0
|
|
1 true
|
|
#endif
|
|
#if -0x80000000 < 0
|
|
2 true
|
|
#endif
|
|
#if -9223372036854775808U > 0
|
|
3 true
|
|
#endif
|
|
#if -0x8000000000000000 > 0 // unsigned by overflow
|
|
4 true
|
|
#endif
|
|
#if 1 << 31 > 2 && 1 << 32 > 2 && 1 << 63 < 2 && 1U << 63 > 2
|
|
5 true
|
|
#endif
|
|
#if (1<<29) * 11 >= 1<<32 && defined DDD << 63 < 0
|
|
6 true
|
|
#endif
|