Posts

Showing posts from September, 2013

c++ goto语句后初始化变量

c++ goto语句后不允许初始化变量,如果必须则使用大括号将之后的语句括起来:

emacs改变字体大小

C-x C-= 放大字体
C-x C-- 缩小字体
C-x C-0 回复默认

interlockeddecrement及interlockedincrement在linux gcc下实现

interlockeddecrement,interlockedincrement是windows提供的一套函数,保证变量的加减是原子操作,在多线程中可以用作同步信号,那么linux gcc上是否也提供了对应的函数呢?肯定是有的gcc提供了一整套原子操作:

struct-pack内存对齐(gcc兼容vs内存对齐)

我们公司的游服消息是用结构体定义的,游服移到linux上麻烦大了,因为Vc++的结果体内存对齐方式与gcc的不同(具体不同google下,很多文章)而以前有些程序员偷懒没加#pragma pack去调整对齐,怎么办呢?其实vc++的cl编译器和gcc编译器都有全局调整内存对齐方式的开关。gcc在编译时加上-fpack-struct=n的开关就可以指定以n字节来对齐,而cl编译器的参数是-Zn,在visual studios中右键单击项目,选择properties-c/c++-code generation-struct memory alignment中选择对应的对齐方式即可。如果你想让gcc兼容vc++的默认的古怪的对齐方式可以在编译时加上参数-mms-bitfields