无法编译 Make(初始化元素不是常量)

作者: rjrockzz创建于 2019年8月13日更新于 2023年8月14日

error: initializer element is not constant const uint32_t USERNAME_OFFSET = ID_OFFSET + ID_SIZE; ^~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:56:31: error: initializer element is not constant const uint32_t EMAIL_OFFSET = USERNAME_OFFSET + USERNAME_SIZE; ^~~~~~~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:57:27: error: initializer element is not constant const uint32_t ROW_SIZE = ID_SIZE + USERNAME_SIZE + EMAIL_SIZE; ^~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:93:33: error: initializer element is not constant const uint32_t IS_ROOT_OFFSET = NODE_TYPE_SIZE; ^~~~~~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:95:40: error: initializer element is not constant const uint32_t PARENT_POINTER_OFFSET = IS_ROOT_OFFSET + IS_ROOT_SIZE; ^~~~~~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:97:5: error: initializer element is not constant NODE_TYPE_SIZE + IS_ROOT_SIZE + PARENT_POINTER_SIZE; ^~~~~~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:103:48: error: initializer element is not constant const uint32_t INTERNAL_NODE_NUM_KEYS_OFFSET = COMMON_NODE_HEADER_SIZE; ^~~~~~~~~~~~~~~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:106:5: error: initializer element is not constant INTERNAL_NODE_NUM_KEYS_OFFSET + INTERNAL_NODE_NUM_KEYS_SIZE; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:107:44: error: initializer element is not constant const uint32_t INTERNAL_NODE_HEADER_SIZE = COMMON_NODE_HEADER_SIZE + ^~~~~~~~~~~~~~~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:117:5: error: initializer element is not constant INTERNAL_NODE_CHILD_SIZE + INTERNAL_NODE_KEY_SIZE; ^~~~~~~~~~~~~~~~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:125:45: error: initializer element is not constant const uint32_t LEAF_NODE_NUM_CELLS_OFFSET = COMMON_NODE_HEADER_SIZE; ^~~~~~~~~~~~~~~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:128:5: error: initializer element is not constant LEAF_NODE_NUM_CELLS_OFFSET + LEAF_NODE_NUM_CELLS_SIZE; ^~~~~~~~~~~~~~~~~~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:129:40: error: initializer element is not constant const uint32_t LEAF_NODE_HEADER_SIZE = COMMON_NODE_HEADER_SIZE + ^~~~~~~~~~~~~~~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:138:39: error: initializer element is not constant const uint32_t LEAF_NODE_VALUE_SIZE = ROW_SIZE; ^~~~~~~~~~ /cygdrive/c/Users/RJ/CLionProjects/DB Minor/rj/db.c:140:5: error: initializer element

内容来源: cstack/db_tutorial