Linux下的编程需要注意的一些问题

119 阅读3分钟
  • 环境:Linux / VS Code
  • 语言:C 语言
  1. 首先要先在terminal里面run task,然后再debug

  2. 尽量不要在main里面直接写函数

  3. 函数先声明,再调用

  4. 路径错误的话可以改成当前路径,./

  5. 测试的时候如果要注释大段代码可以用 # ifdef

  6. save后再编译

  7. 路径的最后要加/才是文件夹

  8. stat 函数: 一个在Linux下读取文件大小的方式

    功能:通过文件名filename获取文件信息,并保存在buf所指的结构体stat中

int stat(const char *filename, struct stat *buf)

size = buf.st_size /*st_size, total size in bytes*/

output: size is 30

  1. 在vs code中配置新的工程的方法:
  • 写好.c和.h文件,一个.h要对应一个.c,#include最好是单向的
  • 点击terminal中的configure tasks, 配置tasks.json,修改args中的路径,要包含所有的.c文件
  • 点击run中的run without debugging, 自动生成launch.json文件,再次点击run without debugging, 就可以看到运行结果
  1. Terminal - run task 相当于是 gcc编译,会有一个输出.o文件。但是在用sqlite3的时候后面有指令所以直接不可以直接用run task会报错undefined function,就是连接不到数据库,所以必须用以下指令:
gcc –o hello –L /usr/bin –I /usr/include Mysql.c –lsqlite3
  • 其中,hello是输出文件,后续要查看输出结果可以用./hello查看。\
  • -L后面是你安装sqlite3类库所在的路径,-I代表安装sqlite3的头文件路径。\
  • 通过whereis sqlite3 可以查看软件安装目录。\
  • 编译的这个文件一定要有一个main函数,所以Mysql.c里面一定要加一个main函数。
  1. 测试数据库,先要在main里面initial新的数据库,再插入数据。

  2. 写了新的测试用例函数记得在.h里面声明,否则有warning。

  3. 在run .c之前要先run .h,否则会有没引用的报错(或者只要save一下.h文件即可)

  4. 用到cjson的话只需要包含cjson.c 和 cjson.h就行了,不需要下载

  5. 要给 *value 分配一个内存空间,可以用calloc或者malloc,也可以动态分配

    Value的值可以不确定,但是地址一定要有,后续才可以调用value

  6. 如果觉得在task.json里args的-g里面一个个添加要编译的.c文件很麻烦的话可以用makefile

  7. !是逻辑运算符,是逻辑取反,比如 !12 = 0, !(5 > 3 ) =0

  8. if()里不是一个表达式,而是个布尔值。表达式的效果也是给if返回一个布尔值,真或者假。

  9. if语句里面包含真和非真,但是如果我们没有写清楚真和非真的话,会如何呢
    if(x) 相当于 if(x !=0)。如果是指针的话,相当于 if( x!=NULL)。而
    if(1) 相当于 if(1 !=0),而if(0)相当于if(0 !=0)

  10. 当注释掉大块代码时,使用"#if 0"比使用"//"要好,因为用"//"做大段的注释要防止被注释掉的代码中有嵌套的"/**/"。

  11. 用__func__预定义标识符可以打印函数名