内核代码绝大部分使用C语言编写,只有一小部分使用汇编语言编写,例如与特定体系结构相关的代码和对性能影响很大的代码。gcc提供了内嵌汇编的功能,可以在C代码中直接内嵌汇编语言语句,大大方便了程序设计。 简单的内嵌汇编很容易理解 例: __asm__ __volatile__("hlt"); “__asm__”表示后面的代码为内嵌汇编,“asm”是“__asm__”的别名。 “__volatile__”表示编译器不要优化代码,后面的指令保留原样, “volatile”是它的别...
编写程序可以用vi编辑器 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本 的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。 1、vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command...
代码如下: [code]#define test \ ({ \ int a = 1; \ a++; \ a; \ }) void main() { int i = test; printf("%d\n", i); }[/code] 上述代码在gcc中编译、连接没有任何问题,运行得到正确结果:2。 可是这样的代码在VC却编译不过,哪位高手指点一下这是为什么? 上面test宏定义中的"({"是什么用法?为什么要大、小括号一起用? VC中为什么就不能这么用? 非常感谢!
初学时最好从命令行入手,这样可以熟悉从编写程序、编译、调试和执行的整个过程。编写程序可以用vi/vim(个人觉得vim比vi好用)或其它编辑器编写。 编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。 gcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击了学习的信心。 一. 常用编译命令选项 假设源程序文件名为test.c。 1. ...
别人的系统,Makefile中找不到编译的具体位置,想在C文件中直接链接静态库,gcc中有这种用法么? 比较急,知道得请帮帮忙