分类 C 中的文章

“自作聪明”的 GCC

printf 变 puts /* main.c */ #include <stdio.h> int main(int argc, char *argv[]) { printf("hello world!\n"); return 0; } $ gcc main.c -nostdlib /usr/bin/ld: 警告: 无法找到项目符号 _start; 缺省为 0000000000001030 /usr/bin/ld: /tmp/cc0k0Sjn.o: in function `main': main.c:(.text+0x1b): undefined reference to `puts' collect2: error: ld returned 1 exit status -nostdlib 选项是让 gcc 不链接标准库。……

阅读全文

C语言内联汇编

内联函数 在 C 语言中,我们可以指定编译器将一个函数代码直接复制到调用其代码的地方执行。这种函数调用方式和默认压栈调用方式不同,我们称这种函数为……

阅读全文

C标准库与gcc的关系

首先 C 是一门语言,包含了一些规定的语法和结构,但并没有包含到我们平常所用的函数,如 printf() 和 scanf(),这些只是由 C 标准库所提供的。之所以存在……

阅读全文

C语言隐式函数声明

1. 什么是 C 语言的隐式函数声明 在 C 语言中,函数在调用前不一定非要声明。如果没有声明,那么编译器会自动按照一种隐式声明的规则,为调用函数的 C 代码……

阅读全文

信号量随想

信号量的作用 信号量一般是伴随共享内存一起使用的。 脑想一下,如果只有共享内存,没有信号量,可不可以? 两个互不相干的进程共享同一块共享内存,一个……

阅读全文

gcs_learn

PDM RDM PDM = config.current.xml RDM = config.current.gcs……

阅读全文

make 常见错误及解决办法

Makefile hello.out : hello.c gcc -o hello.out hello.c (警告)没有声明 warning: implicit declaration of function ‘xxx’ hello.c #include <stdio.h>#include <stdlib.h> int main(int argc, char *argv[]) { printf("hello\n"); add(); return EXIT_SUCCESS; } int add() { } $ make gcc -o hello.out hello.c hello.c: In function ‘main’: hello.c:8:5: warning: implicit declaration of function ‘ad……

阅读全文

NULL 指针 与 野指针

NULL 指针 在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。 野指针 “野指针“不……

阅读全文