C语言
smith342
这个作者很懒,什么都没留下…
展开
-
multiple definition of XXX
instruction.c文件中增加变量定义:handler_t handler_table[NUM_INSTRTYPE];各c文件单独编译应该是没有问题的,但是一起编译链接就会出现上述问题。dram.c中增加变量定义:uint8_t mm[MM_LEN];同时在code.c文件中增加变量定义:reg_t reg;src/memory/instruction.h文件。src/cpu/register.h文件。src/memory/dram.h文件。src/disk/elf.h文件。原创 2022-11-24 09:49:46 · 201 阅读 · 1 评论 -
C语言中的空宏定义
看源代码中有如下宏定义:#define TYPEDEF与平常的宏定义有点不一样,于是查了下这种宏有什么用,总结如下:等价于“#define __TYPE_DEFINE__ do {} while (0)”上面代码输出:1.With Macro TYPE DEFINE如果注释掉“#define __TYPE_DEFINE__”,则输出变成:2.Without Macro TYPE DEFINE3、占位符,用于不同平台移植linux环境开发的代码,可以定义部分Win32相关的空宏,方便移植。原创 2022-11-12 15:17:31 · 1534 阅读 · 0 评论 -
c语言const关键字
一直以来对const关键字比较迷惑,今天好好梳理一下。const表示常量,即只读变量,不能写,无法改变。在变量定义的时候const可以放在多个位置,例如:const char *p、char const *p、char * const p、char *p const和const char * const p。首先const的位置可以分为两类,即*后和*前。...原创 2022-08-05 15:05:24 · 292 阅读 · 0 评论 -
函数指针数组
第一次使用函数指针数组。原创 2022-08-02 21:35:29 · 113 阅读 · 0 评论 -
C语言二维数组用一维数组进行调用
以前就知道C语言的二维数组在内存中是一维数组进行存储的,但是没有试过使用一维数组对二维数组进行调用。原以为编译会报错,但实际上没有报错。原创 2022-08-01 21:03:29 · 1780 阅读 · 1 评论 -
c语言二维数组和二级指针
在做这到道题目时,使用到了二维数组和二级指针,直接将二维数组num赋值给二级指针moves,编译过程会报如下告警:warning: assignment to ‘int **’ from incompatible pointer type ‘int (*)[2]’ [-Wincompatible-pointer-types]于是将二维数组进行类型强制转换:moves=(int **)num; 再次编译告警消失,但是运行会报段错误“Segmentation fault (core dumped)”。力扣原创 2022-07-07 15:22:59 · 3407 阅读 · 0 评论 -
C语言字符串访问越界
力扣 https://leetcode.cn/problems/greatest-common-divisor-of-strings/在做这道题目时,一直报内存访问越界。调试后找到问题所在,对于可能越界的地方,都需要先加上限制条件后再进行访问。原创 2022-07-01 15:14:37 · 584 阅读 · 1 评论 -
C语言链表,指针内存分配
力扣https://leetcode-cn.com/problems/merge-two-sorted-lists/submissions/做这道题目的时候,定义了ListNode指针p,但是没有分配内存,直接初始化,运行时报错。Line 14: Char 11: runtime error: member access within null pointer of type 'struct ListNode' [solution.c]。分配内存后问题解决。/** * Definition fo原创 2022-01-05 11:52:30 · 488 阅读 · 0 评论