修改cmake偶尔报异常的问题

This commit is contained in:
建峰 2024-06-23 22:25:52 +08:00
parent fba69551b5
commit 7ba86577b1
3 changed files with 16 additions and 10 deletions

View File

@ -1,6 +1,6 @@
# 0. cmake 最低版本号要求
cmake_minimum_required(VERSION 3.8)
cmake_minimum_required(VERSION 3.28)
# 0. 项目信息
project(demo)

3
mk.bat
View File

@ -1,7 +1,8 @@
@REM D:\Lang\cmake-3.27.5-windows-x86_64\bin\cmake.EXE --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=D:\Software\mingw64\bin\gcc.exe -DCMAKE_CXX_COMPILER:FILEPATH=D:\Software\mingw64\bin\g++.exe -SF:/OpenDemo/1_vsc_cmake -Bf:/OpenDemo/1_vsc_cmake/build -G "MinGW Makefiles"
@REM cmake -Bbuild -G "Visual Studio 17 2022"
cmake -B build -G "MinGW Makefiles"
@REM cmake -B build -G "MinGW Makefiles"
cmake -B build -G "Unix Makefiles"
make -C build
make -C build install

View File

@ -1496,10 +1496,10 @@ static void tree_set_balance(struct _tree* self, struct _tree_node * node)
*
* | Çé¿ö | root->balance | node->balance | µ÷Õû·½Ê½ |
* | ---- | ------------ | -------------- | -------- |
* | 1 | > 0 | > 0 | ×óĐý
* | 2 | > 0 | < 0 | ĎČÓŇĐýşó×óĐý
* | 3 | < 0 | < 0 | ÓŇĐý
* | 4 | < 0 | > 0 | ĎČÓŇĐýşó×óĐý
* | 1 | > 1 | > 0 | ×óÐý
* | 2 | > 1 | < 0 | ÏÈÓÒÐýºó×óÐý
* | 3 | < -1 | < 0 | ÓÒÐý
* | 4 | < -1 | > 0 | ÏÈÓÒÐýºó×óÐý
*
* @param self
* @return true
@ -1508,13 +1508,14 @@ static void tree_set_balance(struct _tree* self, struct _tree_node * node)
static bool tree_avl_rebalance(struct _tree* self, struct _tree_node* root)
{
assert(self != NULL);
if((root == NULL) || (root->left == NULL) || (root->right == NULL))
if(root == NULL)
{
return true;
}
tree_set_balance(self, root);
int balance = root->balance;
if(balance > 0)
if(balance > 1)
{
if(root->right->balance > 0)
{
@ -1525,7 +1526,7 @@ static bool tree_avl_rebalance(struct _tree* self, struct _tree_node* root)
root = tree_trun_left_then_right(self, root);
}
}
else if(balance < 0)
else if(balance < 1)
{
if(root->left->balance < 0)
{
@ -1537,7 +1538,10 @@ static bool tree_avl_rebalance(struct _tree* self, struct _tree_node* root)
}
}
tree_set_balance(self, root);
if(root->parent != NULL)
{
tree_avl_rebalance(self, root->parent);
}
return true;
}
@ -1665,6 +1669,7 @@ bool tree_avl_insert(struct _tree* self, void* obj)
tree_node_free(node);
return false;
}
self->rebalance(self, root);
}
self->_size++;