![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++
cuijianzhongswust
这个作者很懒,什么都没留下…
展开
-
struct 不定义变量的使用方法
#include struct pm_message { char *event; char *name;};intmain(int argc, char **argv){ printf("%s\n", ((struc原创 2011-09-02 15:11:19 · 885 阅读 · 0 评论 -
gdb
用GDB调试程序 GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更转载 2012-12-03 01:38:52 · 412 阅读 · 0 评论 -
C中的volatile用法
转自:http://www.cnblogs.com/chio/archive/2007/11/24/970632.html volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优转载 2013-01-31 23:25:19 · 414 阅读 · 0 评论 -
linux gnu c feature
===========================Linux 内核使用的 GNU C 扩展===========================GNC CC 是一个功能非常强大的跨平台 C 编译器,它对 C 语言提供了很多扩展,这些扩展对优化、目标代码布局、更安全的检查等方面提供了很强的支持。本文把支持 GNU 扩展的 C 语言称为 GNU C。Linux 内核转载 2013-04-05 08:38:43 · 824 阅读 · 0 评论 -
linux 程序中打印Usage
#include int main(int argc, char **argv){ if (argc != 3) { fprintf(stderr, "Usage: %s {i4|i6|} string\n", argv[0]); exit(EXIT_FAILURE); } r原创 2013-05-24 18:01:00 · 1111 阅读 · 0 评论 -
socket ntop pton两个函数的使用
#include #include #include #include int main(int argc, char **argv){ unsigned char buf[sizeof(struct in6_addr)]; int domain, s; char str[INET6_ADDRSTRLEN]; if (a原创 2013-05-24 18:18:29 · 1097 阅读 · 0 评论 -
STDIN_FILENO的作用及与stdin 的区别
1.STDIN_FILENO的作用STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。2.区别1)数据类型不一致:stdin类型为转载 2013-06-13 11:36:49 · 517 阅读 · 0 评论 -
线程池[高级]
#线程池配置文件filename:[thread_pool_config.conf] 其中‘#’为注释 不准以=开始#线程池最小线程数MIN_THREAD_NUM = 3#线程池最大线程数MAX_THREAD_NUM =50#线程池默认线程数DEF_THREAD_NUM = 25#管理线程动态调节时间间隔(s)MANAGE_ADJUST_INTERVAL = 5#线程数与转载 2013-06-13 19:01:28 · 527 阅读 · 0 评论 -
C++默认构造函数
默认构造函数就是不提供显示的(包含没有参数和默认参数)初始化值,被用来创建对象的构造函数。用于下面这种声明的构造函数Stock stock1;注: 当且仅当没有定义任何构造函数的时候,编译器才会提供默认构造函数, 当我们定义了构造函数,那么我们就必须提供默认构造函数,如Stock(const char *co, int n, double pr);原创 2013-06-25 15:54:00 · 592 阅读 · 0 评论 -
volatile的问题
#include #include "encryption_chip.h"#define GPIO_NUM PAD_GPIO20#define GPIO_DEV "/dev/gpioctl"#define SERIAL_DEV "/dev/ttyS4"int efd;/*这里要用volatile才行,由于编译器的优化,如果不声明为易变的类型,线程中的flag会被优化为与声明时不同原创 2013-08-10 10:36:39 · 624 阅读 · 0 评论 -
container_of 的用法及注意事项
container_of 的定义在 linux 内核 include/linux/kernel.h 中/** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the member. * @type: t原创 2012-12-02 20:52:01 · 7068 阅读 · 1 评论 -
声明必须初始化的---总结
C: 1、const 指针 int a = 10;int * const pa = &a;//注意const int a = 10; //变量是只读的const int *pa = &a; //指针所指向的变量是只读的const int * const pa =原创 2012-09-24 14:53:23 · 560 阅读 · 0 评论 -
防止GCC优化
天碰到一个gcc优化相关的问题,为了让一个页变成脏页(页表中dirty位被置上),需要执行下面这段代码:123uint32_t *page;// ...page[0] = page[0];最后一行代码很有可能被gcc优化掉,因为这段代码看起来没有任何实际的作用。那么如何防止gcc对这段代码做优化呢?设置gcc编译时优化级别转载 2012-09-11 09:35:45 · 5880 阅读 · 0 评论 -
应用层的container_of()实现
#include #include #define to_struct(ptr, type, member) ({ \ const typeof( ((type*)0)->member ) *__mptr = (ptr);原创 2011-09-02 11:18:31 · 1217 阅读 · 1 评论 -
你的变量究竟存储在什么地方?
你的变量究竟存储在什么地方?作者:杨小华 我相信大家都有过这样的经历,在面试过程中,考官通常会给你一道题目,然后问你某个变量存储在什么地方,在内存中是如何存储的等等一系列问题。不仅仅是在面试中,学校里面的考试也会碰到同样的问题。 如果你还不知道转载 2011-08-25 12:04:18 · 509 阅读 · 0 评论 -
一段自己打印自己的c程序
test.c #include #include extern char * _binary_test_c_start; int main() { printf("%s", (转载 2011-10-13 13:04:16 · 419 阅读 · 0 评论 -
字节对齐
字节对齐总以为掌握得很精,但细想起来又有些模糊,今天正好给公司的人发这方面的资料,现在认真的总结一下:一、WINDOWS下(VC--其实GCC和其原理基本一样,象这种问题,一般要查具体的编译器设置)字节对齐的规则:1、一般设置的对齐方式为1,2,4字节对齐方式,VC一般默认为8字节(最大为16字节)。结构的首地址必须是结构内最宽类型的整数倍地址;另外,结构体的每一个成员起始地址必须是自身类转载 2011-10-22 15:59:42 · 707 阅读 · 0 评论 -
STDIN_FILENO的作用及与stdin 的区别
1.STDIN_FILENO的作用STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。2.区别1)数据类型不一致:stdin类型为转载 2011-12-15 14:08:16 · 749 阅读 · 0 评论 -
c中switch case 中关于变量定义问题
/* * 在switch case中,不能在case语句中直接定义变量, * * 指定-std=c99也不允许这样定义,必须使用大括号限定作用域。 * 这样作是为了避免下面的情况: * switch (type) { * * case A: * int a =1; * case B: * a = 2;原创 2012-01-05 09:59:52 · 1446 阅读 · 3 评论 -
Ymodem协议的学习
一、Ymodem协议学习的目的1、Ymodem协议的应用打开超级终端,在传送主菜单里,有接收文件和发送文件的子菜单。也就是超级终端可以与连接的对象之间相互传送文件。打开发送文件选项,可知,只需要选择“文件名”和“协议”两个选项,就可以进行文件的传送了。协议的类型有7中,Xmodem及改进的1k-Xmodem,Ymodem和Ymodem-G,Zmodem及其改进协议,以及Kermit转载 2012-04-19 10:31:59 · 3748 阅读 · 0 评论 -
C语言编译过程总结详解
C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解如下: 从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则转载 2012-05-16 11:11:14 · 626 阅读 · 0 评论 -
C中fopen的mode参数中,b的使用区别
其中主要的内容要看下面: 但是,所谓使用fopen标志打开文本文件与二进制文件的说法并不准确。正确的说法应该是--以文本方式和二进制方式打开文件。因为我们用两种方式都可以任意的文件。 即使这样,为什么还要区分两种方式呢? 这是因为这两种方式在读写文件时的操作是不一样的。 二进制方式很简单,读文件时,会原封不动的读出文件的全部內容,写的時候,也是把內存缓冲区的转载 2012-06-28 11:03:02 · 2346 阅读 · 0 评论 -
链接脚本官网
http://sourceware.org/binutils/docs-2.21/ld/index.html原创 2012-06-28 16:58:56 · 1262 阅读 · 0 评论 -
C++中的explicit关键字
在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很高的。了解explicit关键字的功能及其使用对于我们阅读使用库是很有帮助的,而且在编写自己的代码时也可以尝试使用。既然C++语言提供这种特性转载 2013-08-18 13:22:53 · 483 阅读 · 0 评论