
C/C++语言
文章平均质量分 73
wutao322
这个作者很懒,什么都没留下…
展开
-
Define使用总结
1. 定义简单的常数:定义常量,便于修改(切不可在后面加上分号!) #define N 1000 等效于 const int N = 1000; 但略有不同,define只是简单替换,而不是作为一个量来使用.2. 定义简单的函数:注意多使用括号 #define MAX(x, y) ((x) > (y)) ?(x) : (y)3. 定义单行宏:主要有以下三种用法. 1)原创 2013-06-16 20:13:56 · 1295 阅读 · 0 评论 -
(int&)a是什么意思
在《程序员面试宝典》有这样一道题目:#include #include using namespace std;int _tmain(int argc, _TCHAR* argv[]){ float fa = 1.0f; cout<<&fa<<endl; //0x0012ff60 cout<<(int)fa<<endl; //1 cout<<(float&)fa转载 2014-06-26 16:19:53 · 1560 阅读 · 0 评论 -
关于container_of和list_for_each_entry 及其相关函数的分析
Linux代码看的比较多了,经常会遇到container_of和list_for_each_entry,特别是list_for_each_entry比较多,因为Linux经常用到链表,虽然知道这些函数的大概意思,但一旦出现一个类似的函数比如list_for_each_entry_safe就又会感到头大,所以下定决心分析总结一下这些函数的用法,以后再看到这些面孔的时候也会轻松很多,读Linux代码的转载 2013-12-31 15:30:05 · 1349 阅读 · 0 评论 -
C语言中的typeof关键字
typeof关键字是C语言中的一个新扩展。typeof的参数可以是两种形式:表达式或类型。下面是使用表达式的的例子: typeof(x[0](1)这里假设x是一个函数指针数组,这样就可以得到这个函数返回值的类型了。如果将typeof用于表达式,则该表达式不会执行。只会得到该表达式的类型。以下示例声明了int类型的var变量,因为表达式foo()是int类型的。由于转载 2013-12-31 15:25:35 · 1158 阅读 · 0 评论 -
C语言编程中的常见错误总结
编程中, 经常会遇到这样或者那样的错误, 除了一部分是因为需求、分析设计的问题外, 另一部分则是和代码相关的。 总结一下代码相关的常见错误,欢迎补充!1. 内存泄露 内存只申请使用, 异常地方处理却没有释放掉。2. 内存(数组)越界访问 数组越界很常见, 尤其是使用全局变量数组变量。 3. 野指针 free的指针, 要及时指向NULL,否则原创 2013-08-25 17:21:50 · 2742 阅读 · 0 评论 -
详解大端模式和小端模式
前言:记得刚接触到网络编程时,我的师傅曾经告诉我网络编程要注意大小端模式的问题。当时不以为然,对于一个曾经只在PC上写程序的人来说,从来未考虑这些底层硬件细节。 然后在日后的工作中, 一次任务,要我将某项目的代码移植到另外一个项目上时, 编译过了后, 在运行的时候却都有问题。 经过对数据的分析后,最终原因是原来的项目是在PPC上运行的,后来移植的是ARM的。 前者是大端,和网络字节序一样,后者转载 2013-07-28 09:05:22 · 2022 阅读 · 0 评论 -
C语言可变参数的实现详解
1. 概述由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数目的问题进行讨论.2. 定义大家先看几宏.在VC++6.0的include有一个stdarg.h头文件,有如下几个宏定义:#define _INTSIZEOF(n) (转载 2013-07-27 17:18:56 · 1975 阅读 · 0 评论 -
va_start和va_end 详解
关于嵌入式编程, 在调试过程中,通过可以控制的打印, 是调试的最好方式。 然而, 针对打印的内容, 有多种形式且内容不固定,采用传统的固定打印方式,一般很难满足我们的需求。 如何提供一套好的打印接口,一直以来,是嵌入式编程讨论的内容之一。 去年在阅读CUNIT 单元测试框架中, 有比较好的调试打印的实现; 最近在阅读ptpd的源代码过程中, 也有比较好的调试打印。 但是,总结一下原创 2013-07-27 16:49:12 · 1093 阅读 · 0 评论 -
Linux C 格式化输出时要注意的问题
在Linux下提供了以下函数提供格式化输出,printf,fprintf,sprintf,snprintf。这些函数的头文件定义都是stdio.h。为标准的C库函数。 printf提供标准的输出流,fprintf往特定的流中写数据。前者比较常见,用的也较多。 sprintf格式化输入到字符指针缓冲,这个函数自动的加入null byte到缓冲,但是返回值不包括这个结束字节。转载 2013-07-27 16:11:10 · 1418 阅读 · 0 评论 -
Printf 家族函数
函数名称(NAME)printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - 输出格式转换总览 (SYNOPSIS)#include stdio.h>int printf(const char *format, ...); int fprintf(FILE *stream, cons转载 2013-07-27 16:16:53 · 1370 阅读 · 0 评论 -
C语言异或运算符的一个应用
参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。即: 0^0 = 0, 1^0 = 1, 0^1 = 1, 1^1 = 0例如:10100001^00010001=10110000按位异或的3个特点:(1) 0^0=0,0^1=1 0异或任何数=任何数(2) 1^0=1,1^1=0 1异或任何原创 2013-07-25 15:49:34 · 2874 阅读 · 0 评论 -
Source Insight中集成Uncrustify格式化代码
我们在编写代码时一定会对代码进行格式化,清晰整洁的代码,完备的注释信息,大大地提高了程序的维护和阅读。Uncrustify是一个代码美化工具可用于C,C++,C#,D和Java源代码的美化。它能够利用空格,tab与空格或只有tab进行缩排,添加或删除换行,排列代码等,并且Uncrustify具有高配置性,易于修改的特点,配合Source Insight 使用堪称完美。 工作环原创 2013-07-05 10:12:20 · 3364 阅读 · 0 评论 -
怎样打印long long型数
前言: 在16位环境下,int/unsigned int 占16位,long/unsigned long占32位 在32位环境下,int占32位,unsigned int占16位,long/unsigned long占32位何时需要使用: long 和 int 范围是[-2^31,2^31-1],即-2147483648~2147483647,而unsigned范围是[0,2转载 2013-07-15 18:12:43 · 2496 阅读 · 0 评论 -
20个C语言中常用宏定义总结
01: 防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件内容#endif02: 重新定义一些类型防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedef unsigned char boolean; /* Boolean value type. */typedef uns原创 2013-06-27 09:41:03 · 1228 阅读 · 0 评论 -
关于C语言结构体偏移的一点思考
前言 相信大家在c语言程序开发的过程一定都使用过结构体,那么不知你对结构体中成员变量偏移这块是如何理解的?本文将和大家一起分享下,本人最近关于c语言中结构体偏移的一些思考和总结。另外这篇博文还可以帮你更好的理解这个问题c语言中两种宏定义的区别,关于这个思考有哪些方面的意义,细心的你可能发现本文所属的类别为linux内核源码分析,而并非 GNU C语言编程,可能有些同学会有些许好奇。不过转载 2013-06-27 09:40:08 · 1381 阅读 · 0 评论 -
C++读书笔记
1. 程序被组织成4个逻辑段:可执行代码、静态数据、动态数据(堆)和栈。l 可执行代码和静态数据存储在固定的内存位置。l 程序请求动态分配的内存来自于成为堆的内存池。l 局部数据对象、函数的参数以及调用函数和被调用函数的联系放在称为栈的内存池中。2. 什么时候使用引用,什么时候使用指针?下面给出了一些指导原则:l 如果指向的变量可能不存在,那么就使用指针。对原创 2013-06-17 21:22:52 · 1248 阅读 · 0 评论 -
宏定义中的##操作符和... and _ _VA_ARGS_ _
1.PreprocessorGlue: The ## Operator预处理连接符:##操作符Like the # operator,the ## operator can be used in the replacement section of a function-likemacro.Additionally, it can be used in the replacement se转载 2013-06-16 18:19:55 · 2197 阅读 · 0 评论 -
别再让C++头文件中出现“using namespace xxx;”
在这里,我毫不回避地说了这句话: 引用我再也不想在任何头文件中看到“using namespace xxx;”了作为一个开发者/团队领导者,我经常会去招聘新的项目成员,有时候也帮助其他组的人来面试应聘者。作为应聘流程之一,我经常要求应聘者写一些代码,因此我检查过相当多的代码。在最近提交的C++代码中,我注意到一个趋势,在任何头文件中,我总是能看到以下代码:转载 2014-08-22 18:35:07 · 1505 阅读 · 1 评论