feat(pproc): 实现宏展开功能并重构宏定义接口
- 新增 pproc_expand.h 头文件,定义宏展开相关的数据结构和函数接口 - 重命名宏相关类型和函数,将 scc_pp_* 前缀统一改为 scc_pproc_* - 修改宏参数解析逻辑,支持更灵活的参数处理方式 - 实现完整的宏展开功能,包括对象宏和函数宏的展开 - 添加字符串化操作符 (#) 的支持 - 改进预处理器主循环逻辑,优化宏展开流程 - 更新单元测试用例,增加对宏参数解析和字符串化的测试
This commit is contained in:
@@ -88,6 +88,7 @@ static void test_define_object_macro_backspace(void) {
|
||||
static void test_define_function_macro(void) {
|
||||
TEST_CASE("function-like macro");
|
||||
CHECK_PP_OUTPUT_EXACT("#define ADD(a,b) a + b\nADD(1, 2)\n", "1 + 2\n");
|
||||
CHECK_PP_OUTPUT_EXACT("#define ADD( a , b ) a + b\nADD(1, 2)\n", "1 + 2\n");
|
||||
CHECK_PP_OUTPUT_EXACT(
|
||||
"#define MAX(a,b) ((a) > (b) ? (a) : (b))\nMAX(10, 20)\n",
|
||||
"((10) > (20) ? (10) : (20))\n");
|
||||
@@ -99,6 +100,8 @@ static void test_define_stringify_operator(void) {
|
||||
"\"hello\"\n");
|
||||
CHECK_PP_OUTPUT_EXACT("#define STR(x) #x\nSTR(test value)\n",
|
||||
"\"test value\"\n");
|
||||
CHECK_PP_OUTPUT_EXACT("#define STR(x) #x\nSTR(A B \"ab\")\n",
|
||||
"\"A B \"ab\"\"\n");
|
||||
}
|
||||
|
||||
static void test_define_concat_operator(void) {
|
||||
@@ -206,7 +209,7 @@ static void test_error_cases(void) {
|
||||
|
||||
static void test_edge_cases(void) {
|
||||
TEST_CASE("empty macro");
|
||||
CHECK_PP_OUTPUT_EXACT("#define EMPTY\nEMPTY\n", "\n");
|
||||
CHECK_PP_OUTPUT_EXACT("#define EMPTY()\nEMPTY()\n", "\n");
|
||||
|
||||
TEST_CASE("macro with only spaces");
|
||||
CHECK_PP_OUTPUT_EXACT("#define SPACE \nSPACE\n", "\n");
|
||||
|
||||
Reference in New Issue
Block a user