C/C++
文章平均质量分 69
zoudaokou2006
宁静以致远,淡泊以明志
展开
-
结构体中的成员对齐
关于结构体中成员对齐的总结:a.结构体中,结构体成员要对齐到其对齐值倍数的地址上,对齐值为MIN(成员类型对齐值,编译器结构成员对齐值)。b.结构体本身的对齐值为其所有成员中最大的对齐值。c.结构体本身要对齐到其对齐值倍数的地址上。d.结构体中的结构体要对齐到其对齐值倍数的地址上。e.结构体成员在内存中的排序和其定义顺序是相同。 在win32环境下: t原创 2008-08-22 18:07:00 · 690 阅读 · 0 评论 -
SCO Unix关于预处理宏的介绍
<br />转自http://uw713doc.sco.com/en/SDK_cprog/_Preprocessing_Directives.html<br /> <br />Preprocessing directives<br />Preprocessing operators<br />The preprocessing operators are evaluated left to right, without any defined precedence.<br />#A macro parame原创 2010-07-04 22:49:00 · 825 阅读 · 0 评论 -
C89标准宏定义部分(中文翻译)
宏替换1、当且仅当两个替换序列中的预处理标记具有相同的数目、顺序、拼写和空白分隔符时,它们才是等价的,其中所有的空白分隔符都被看成是等同的。2、被定义为对象式宏(不具有lparen的宏)的标识符可被另外一个#define预处理指令重定义,只要第二个定义也是对象式宏,且它们的替换序列等价;否则程序是非法的。3、被定义为函数式宏(具有lparen的宏)的标识符可被另外一个#define预处理指令重定义,只要第二个定义也是函数式宏,并同第一个函数式宏具有相同数目和拼写的参数,且它们的替换序列等价;否则程序是非法的转载 2010-07-04 23:05:00 · 3034 阅读 · 0 评论 -
C/C++宏定义
推荐本文,本文包含宏定义扩展过程举例说明~转载 2010-07-04 23:12:00 · 901 阅读 · 0 评论 -
解决出现fatal error LNK1169: one or more multiply
<br />大家都知道,从C/C++源程序到可执行文件要经历两个阶段:(1)编译器将源文件编译成汇编代码,然后由汇编器(assembler)翻译成机器指令(再加上其它相关信息)后输出到一个个目标文件(object file,VC的编译器编译出的目标文件默认的后缀名是.obj)中;(2)链接器(linker)将一个个的目标文件(或许还会有若干程序库)链接在一起生成一个完整的可执行文件。<br /><br />编译器编译源文件时会把源文件的全局符号(global symbol)分成强(strong)和弱(wea转载 2010-06-22 19:12:00 · 1342 阅读 · 0 评论 -
也谈关于一道1到N自然数排序的华为面试题
在http://blog.csdn.net/hongyuan19/archive/2007/11/16/1887656.aspx看到《关于一道1到N自然数排序的华为面试题》,文中提到了一道华为面试题: 有N个大小不等的自然数(1--N),请将它们由小到大排序。 要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。 文中同时给出了该题的解法,但是从评论来看,还是有很多人不明白不理解。 本人斗胆写了一段完整的程序,给出了这道题完整的程序以及验证程序,该程序在VS20原创 2010-09-26 00:55:00 · 1731 阅读 · 5 评论 -
C语言的谜题
<br />转自http://blog.csdn.net/haoel/archive/2009/06/01/4231029.aspx<br /><br />1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?#include <stdio.h><br />#include <unistd.h><br />int main() { while(1) { fprintf(stdout,"hello-std-out"); fpri转载 2010-10-07 19:51:00 · 691 阅读 · 0 评论 -
static关键字总结
static关键字用于不同的上下文环境时有不同的意思。当static用于函数定义或代码块之外的变量声明时,static用于修改该标识符的链接属性(external、internal、none三种链接属性,external指不管该标识符声明多少次、位于几个原文件中都表示同一个实原创 2011-08-18 17:20:32 · 818 阅读 · 0 评论 -
谈谈C语言中函数声明/定义冲突时的处理(VS2010、VC6)
首先,本文中讨论的例子采用C语言,而非C++语言。使用示例分析这个问题:例子1#include void hello(int a);void hello(int a, int b);void hello(int a){ printf("hello,原创 2011-08-19 13:06:04 · 9886 阅读 · 0 评论 -
if,while和do..while语句的汇编形式代码
(1)if语句 /**** if 语句 pseudo-code ********/ if ( condition ) then_block; else else_block; /****if 语句 assembly language ***/ ; code to set FLAGS jxx else_block ;如果条件为假跳转到else_block分支 ; code for then原创 2010-04-02 16:51:00 · 2195 阅读 · 0 评论 -
return type specification for constructor invalid
ERROR : return type specification for constructor invalid处理 : 检查类声明后是否未加; 以下转自http://hi.baidu.com/taney/blog/item/1184187f2300880e28388aed.html class a{public: a(); ~a()转载 2009-11-23 02:20:00 · 11812 阅读 · 3 评论 -
memmove和memcpy
memmove和memcpy 1.memmove函数原型:void *memmove(void *dest, const void *source, size_t count)返回值说明:返回指向dest的void *指针参数说明:dest,source分别为目标串和源串的首地址。count为要移动的字符的个数函数说明:memmove用于从source拷贝count个字符到de转载 2008-09-26 20:31:00 · 951 阅读 · 0 评论 -
-VC字节对齐全攻略
字节对齐一般是指结构成员对齐。 VC中下面几个结构体大小分别是多少呢struct MyStruct{ double m4; char m1; int m3;};struct MyStruct { char m1; double m4; int m3;};#pragma pack(push)//保存对齐状态#pragma pack(16)转载 2009-02-06 18:28:00 · 787 阅读 · 1 评论 -
如何用MinGW 命令行编译链接c/c++
一直用VS,看现在Eclipse很火,便想弄一下玩玩,用到了MINGW,继而用到了GCC,对GCC相当的不熟悉,从头开始学一些简单的吧。 简单的GCC用法~ gcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击了学习的信心。 一. 常用编译命令选项 假设源程序文件名为test.c。 1. 无选项编译链接 用法:原创 2009-02-13 01:36:00 · 5044 阅读 · 0 评论 -
使用 typedef 抑制劣质代码
原文出处:Using typedef to Curb Miscreant Code摘要:Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。 typedef 声明,简称 typedef,转载 2009-03-02 16:51:00 · 787 阅读 · 0 评论 -
volatile——编写多线程程序的好帮手
Volatile-Correctness,让编译器帮你检测竞争条件并不是我故意想弄糟你的心情,但是在这期专栏里,我们将讨论多线程编程这一话题。正如上一期Generic里所说的,编写异常安全(exception-safe)的程序是非常困难的,但是和编写多线程程序比起来,那简直就是儿戏。 多线程的程序是出了名的难编写、难验证、难调试、难维护,这通常是件苦差事。不正确的多线程程序可能可以运行很多年也转载 2009-03-02 18:49:00 · 1069 阅读 · 0 评论 -
C语言陷阱和缺陷
C语言陷阱和缺陷[1] [译序]那些自认为已经“学完”C语言的人,请你们仔细读阅读这篇文章吧。路还长,很多东西要学。我也是……[概述]C语言像一把雕刻刀,锋利,并且在技师手中非常有用。和任何锋利的工具一样,C会伤到那些不能掌握它的人。本文介绍C语言伤害粗心的人的方法,以及如何避免伤害。[内容]0 简介 1 词法缺陷 .1 =原创 2009-03-18 11:39:00 · 2225 阅读 · 0 评论 -
关于优先级和结合性
运算符的优先级:C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。 运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y原创 2009-03-22 01:35:00 · 980 阅读 · 0 评论 -
A 'C' Test: The 0x10 Best Questions for Would-be Embedded Programmers(想成为嵌入式程序员应知道的0x10个基本问题)
http://www.embedded.com/2000/0005/0005feat2.htm Nigel Jones Pencils up, everyone. Heres a test to identify potential embedded programmers or embedded programmers with potential A转载 2009-05-18 18:28:00 · 1923 阅读 · 0 评论 -
snprintf 在GCC VC 上不同的行为及其探讨
来源:http://www.jeffhung.net/blog/articles/jeffhung/1064/ 本文援引自JeffHung.Blog。由于台湾和大陆在术语上并不统一,因此我对原文作了术语的改动,同时按照自己的一些理解,对原文不明晰、不严谨的地方作了一些改动。感谢jeffhung对该问题作出的探讨。 最近写程序的时候,发现不同的 compiler,其snprint转载 2008-12-14 13:51:00 · 4417 阅读 · 0 评论