
C语言
legendmaker
嵌入式系统 驱动 SOC COPC
展开
-
C可变参数
#include // 必须包含的头文件 intAdd(int start,...) // ...是作为占位符 { va_list arg_ptr; // 定义变参起始指针 int sum=0; // 定义变参的和 int nArgValue =start; // va_start(arg_ptr,start);// arg_ptr指向第一个变参 do { sum+转载 2013-08-28 10:01:52 · 527 阅读 · 0 评论 -
C语言宏的高级应用
关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏: #defineWARN_IF(EXP) \ do{ if (EXP) \ fprintf(stderr, "Warning: " #EXP "\n");} \ while(0) 那么实际使用中会转载 2013-08-28 10:03:41 · 641 阅读 · 0 评论 -
linux下获取线程id
#include pid_t gettid()原创 2013-08-28 10:05:33 · 538 阅读 · 0 评论 -
c静态函数
C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。 4)栈——增长方向:自顶向下增长;自动变量以转载 2013-08-29 09:37:17 · 1724 阅读 · 0 评论 -
详解C中volatile关键字
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。转载 2013-08-29 10:11:01 · 648 阅读 · 0 评论