refactor(argparse): 将null替换为nullptr以提高C++兼容性
- 在argparse库中将所有null指针常量替换为nullptr - 更新头文件和源文件中的指针初始化和比较操作 - 修改测试文件中的相关断言检查 - 更新AST定义文件中的注释说明
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
|
||||
#include <scc_core.h>
|
||||
|
||||
#define SCC_IR_REF_NULL 0
|
||||
#define SCC_IR_REF_nullptr 0
|
||||
|
||||
typedef unsigned int ir_handle_t;
|
||||
typedef const char *scc_ir_label_t;
|
||||
@@ -86,7 +86,8 @@ struct scc_ir_func {
|
||||
};
|
||||
|
||||
typedef enum scc_ir_value_tag {
|
||||
SCC_IR_VALUE_TAG_NULL,
|
||||
SCC_IR_VALUE_TAG_NULLPTR,
|
||||
SCC_IR_VALUE_TAG_BUILTIN,
|
||||
SCC_IR_VALUE_TAG_CONST_INT,
|
||||
SCC_IR_VALUE_TAG_CONST_UINT,
|
||||
SCC_IR_VALUE_TAG_CONST_FLOAT,
|
||||
@@ -175,12 +176,60 @@ typedef union {
|
||||
u8 float_any[16];
|
||||
} scc_ir_const_float_t;
|
||||
|
||||
typedef enum {
|
||||
SCC_IR_BUILTIN_TAG_MEMCPY,
|
||||
SCC_IR_BUILTIN_TAG_MEMSET,
|
||||
SCC_IR_BUILTIN_TAG_VA_START,
|
||||
SCC_IR_BUILTIN_TAG_VA_ARG,
|
||||
SCC_IR_BUILTIN_TAG_VA_END,
|
||||
SCC_IR_BUILTIN_TAG_VA_COPY,
|
||||
} scc_ir_builtin_tag_t;
|
||||
|
||||
typedef struct {
|
||||
scc_ir_builtin_tag_t tag;
|
||||
union {
|
||||
struct {
|
||||
scc_ir_value_ref_t dest;
|
||||
scc_ir_value_ref_t src;
|
||||
scc_ir_value_ref_t size;
|
||||
} memcpy;
|
||||
struct {
|
||||
scc_ir_value_ref_t dest;
|
||||
scc_ir_value_ref_t value;
|
||||
scc_ir_value_ref_t size;
|
||||
} memset;
|
||||
struct {
|
||||
scc_ir_value_ref_t ap; // va_list 的地址(i8* 或 struct*)
|
||||
scc_ir_value_ref_t last; // 最后一个固定参数的引用(用于 va_start)
|
||||
} va_start;
|
||||
struct {
|
||||
scc_ir_value_ref_t ap; // va_list 的地址
|
||||
scc_ir_type_ref_t type; // 要提取的参数的类型
|
||||
} va_arg;
|
||||
struct {
|
||||
scc_ir_value_ref_t ap; // va_list 的地址
|
||||
} va_end;
|
||||
struct {
|
||||
scc_ir_value_ref_t dest; // 目标 va_list 地址
|
||||
scc_ir_value_ref_t src; // 源 va_list 地址
|
||||
} va_copy;
|
||||
} func;
|
||||
} scc_ir_builtin_t;
|
||||
|
||||
typedef enum {
|
||||
SCC_IR_LINKAGE_EXTERNAL,
|
||||
SCC_IR_LINKAGE_INTERNAL,
|
||||
SCC_IR_LINKAGE_PRIVATE,
|
||||
SCC_IR_LINKAGE_WEAK,
|
||||
} scc_ir_linkage_t;
|
||||
|
||||
struct scc_ir_value {
|
||||
scc_ir_type_ref_t type;
|
||||
scc_ir_label_t name;
|
||||
scc_ir_node_ref_vec_t used_by;
|
||||
scc_ir_value_tag_t tag;
|
||||
union {
|
||||
scc_ir_builtin_t builtin;
|
||||
scc_ir_const_int_t const_int;
|
||||
scc_ir_const_uint_t const_uint;
|
||||
scc_ir_const_float_t const_float;
|
||||
|
||||
Reference in New Issue
Block a user