1、cmake编译
//CMakeLists.txt
cmake_minimum_required(VERSION 3.16.3)
project(VCD)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) //括号里面填库文件所在文件夹
# src files
set(SRC_FILES
main.c
*.c //所有需要编译的文件都可以写在这里
*.h
)
SET(CMAKE_BUILD_TYPE "Debug") //设置这个,可以在终端利用gdb对代码进行调试
ADD_EXECUTABLE(vcd ${SRC_FILES})
2、编译
通常都是在build文件中编译,这样也比较方便删除编译过程中生成的文件,不和代码产生混淆。以下使用build.sh脚本实现快速编译:
cd build
cmake ..
make
./vcd
cd ..
3、小技巧
3.1 sprintf()函数可以实现不同类型的变量输出到一个目的字符串,使用时需包含#include
sprintf(buffer, "%d, %f, %s", 123, 123, "Hello world !");
3.2 atoi()函数用于把一个字符串转换成一个整型数据,使用时需包含#include
int val;
char str[10];
strcpy(str, "100");
val = atoi(str);
4、c代码中比较好用的代码
4.1 c语言实现一个列表list(转载于https://blog.csdn.net/qq_35025383/article/details/80840905)
#include
#include
struct plist {//定义列表结构体
int A[1000];
int n;
};
void List_Init(plist *list);
void List_Append(plist* list, int value);
void List_Show(plist *list);
void List_Insert(plist *list, int index, int value);
void List_Init(plist *list) { //初始列表
list->n = 0;
}
void List_Append(plist* list, int value) { //参考python中的append()函数
list->A[list->n++] = value;
}
void List_Insert(plist *list, int index, int value) { //插入在某个位置插入值,下标从0开始
for (int i = list->n - 1; i >= index; i--) {
list->A[i + 1] = list->A[i];
}
list->A[index] = value;
list->n++;
}
void List_Show(plist *list) { //打印列表
printf("len=%d values=", list->n);
for (int i = 0; i < list->n; ++i)
{
printf("%d ", list->A[i]);
}
printf("\n");
}
int main() {
plist* P_List = (plist*)malloc(sizeof(plist));
List_Init(P_List);
List_Append(P_List, 123);
List_Append(P_List, 456);
List_Append(P_List, 789);
List_Show(P_List);
List_Insert(P_List, 1, 666);
List_Show(P_List);
}
4.2 c语言hashmap的实现
参考地址