diff --git a/CMakelists.txt b/CMakelists.txt index 5f0c9ae..0c1e40e 100644 --- a/CMakelists.txt +++ b/CMakelists.txt @@ -1,7 +1,21 @@ +# cmake 最低版本号要求 cmake_minimum_required(VERSION 3.8) +# 项目信息 project(demo) + +# 查找当前目录下的所有文件 +# 并将名称保存在DIR_SRC中 aux_source_directory(. DIR_SRC) +# 添加子目录 +add_subdirectory(src) + +# 添加头文件路径 +include_directories(src) + +# 指定生成目标 add_executable(demo ${DIR_SRC}) + +target_link_libraries(demo list) diff --git a/main.c b/main.c index 3365622..5783c33 100644 --- a/main.c +++ b/main.c @@ -3,68 +3,7 @@ #include #include -typedef struct list_t -{ - uint8_t data; - struct list_t *next; -} list_t; - -void list_init(struct list_t *list) -{ - list->data = 0; - list->next = NULL; -} - -void list_add(struct list_t *list, uint8_t data) -{ - struct list_t *p = NULL; - p = list; - while (p->next != NULL) - { - p = p->next; - if (p->data == data) - { - return; - } - } - p->next = (struct list_t *)malloc(sizeof(struct list_t)); - p->next->data = data; - p->next->next = NULL; - return; -} - -void list_print(struct list_t *list) -{ - struct list_t *p = NULL; - p = list; - while (p->next != NULL) - { - printf("%02d\n", p->data); - p = p->next; - if (p->next == NULL) - { - printf("%02d\n", p->data); - break; - } - } -} - -void list_free(struct list_t *list) -{ - struct list_t *p = NULL; - p = list; - while (p->next != NULL) - { - p = p->next; - free(p->next); - p->next = NULL; - if (p->next == NULL) - { - break; - } - } -} - +#include "list.h" void list_demo(void) { @@ -81,24 +20,16 @@ void list_demo(void) void main(int arg, char *argv[]) { #if 0 - uint32_t i = 0; - for (i = 0; i < 10; ++i) - { - printf("%02d\n", i); - } - printf("\n"); + struct list_t list; + list_init(&list); - printf("Hello World!\n"); + list_add(&list, 1); + list_add(&list, 2); + list_add(&list, 3); + list_add(&list, 4); + + list_print(&list); #else - // struct list_t list; - // list_init(&list); - // list_add(&list, 1); - // list_add(&list, 2); - // list_add(&list, 3); - // list_add(&list, 4); - - // list_print(&list); - list_demo(); #endif } diff --git a/src/CMakelists.txt b/src/CMakelists.txt new file mode 100644 index 0000000..29f2e5a --- /dev/null +++ b/src/CMakelists.txt @@ -0,0 +1,6 @@ + +# 当前目录下的文件 -> 写入变量 +aux_source_directory(. DIR_LIB_SRC) + +# 生成链接库 +add_library(list ${DIR_LIB_SRC}) diff --git a/src/list.c b/src/list.c new file mode 100644 index 0000000..979a085 --- /dev/null +++ b/src/list.c @@ -0,0 +1,58 @@ + +#include "list.h" + +void list_init(struct list_t *list) +{ + list->data = 0; + list->next = NULL; +} + +void list_add(struct list_t *list, uint8_t data) +{ + struct list_t *p = NULL; + p = list; + while (p->next != NULL) + { + p = p->next; + if (p->data == data) + { + return; + } + } + p->next = (struct list_t *)malloc(sizeof(struct list_t)); + p->next->data = data; + p->next->next = NULL; + return; +} + +void list_print(struct list_t *list) +{ + struct list_t *p = NULL; + p = list; + while (p->next != NULL) + { + printf("%02d\n", p->data); + p = p->next; + if (p->next == NULL) + { + printf("%02d\n", p->data); + break; + } + } +} + +void list_free(struct list_t *list) +{ + struct list_t *p = NULL; + p = list; + while (p->next != NULL) + { + p = p->next; + free(p->next); + p->next = NULL; + if (p->next == NULL) + { + break; + } + } +} diff --git a/src/list.h b/src/list.h new file mode 100644 index 0000000..82f925c --- /dev/null +++ b/src/list.h @@ -0,0 +1,20 @@ + +#ifndef _LIST_H_ +#define _LIST_H_ + +#include +#include +#include + +typedef struct list_t +{ + uint8_t data; + struct list_t *next; +} list_t; + +void list_init(struct list_t *list); +void list_add(struct list_t *list, uint8_t data); +void list_print(struct list_t *list); +void list_free(struct list_t *list); + +#endif diff --git a/src/test.c b/src/test.c deleted file mode 100644 index 2dd625e..0000000 --- a/src/test.c +++ /dev/null @@ -1,8 +0,0 @@ - -#include "test.h" -#include - -void test() -{ - printf("test\n"); -}