C++结构对齐与内联函数混用的时候要注意的
来源:互联网 发布:马鞍山淘宝店铺美工 编辑:程序博客网 时间:2024/05/21 09:08
/***************
*file1.h
***************/
//这里使用默认结构对齐,一般是8
class AAA
{
public:
char c;
int n;
public:
void Set(char s1, int s2);
public:
int Get() const { return n; }//内联函数
};
/***************
*file1.cpp
***************/
#include "stdafx.h"
#include "file1.h"
void AAA::Set(char s1, int s2)
{
c = s1;
n = s2;
}
/***************
*file2.h
***************/
#pragma pack(1) //注意这里使用1字节结构对齐
#include "file1.h"
class BBB
{
public:
AAA * m_pA;
public:
void Fun();
};
/***************
*file2.cpp
***************/
#include "stdafx.h"
#include "file2.h"
void BBB::Fun()
{
m_pA = new AAA;
//这里的sizeof(*m_pA) == 5
m_pA->Set( 1, 2);
int nRet = m_pA->Get();
//这里的nRet将不会等于2,因为这里内联函数展开相当于
//int nRet = m_pA->n;
//而因为这里1字节对齐,所以地址偏移只是1个字节
//而实际上有AAA的构造函数的编译情况来看,是默认字节对齐的,也就是其成员变量C偏移0,而N变量时偏移了3个字节的
//所以取值实际上应该是偏移3个字节的,nRet = *(int*)((VOID*)m_pA + 4)
- C++结构对齐与内联函数混用的时候要注意的
- 内联函数与宏的使用注意
- 内联函数的使用及注意点
- 内联函数的使用及注意点
- 内联函数的使用以及注意点
- 内联函数的使用及注意点
- 内联函数背景、例子、与普通函数的区别及要注意的地方 ------新标准c++程序设计
- C语言的sizeof与结构体的对齐
- C++内联函数与C语言宏的比较
- 【C++】内联inline、继承、重载与虚函数的解释
- select函数与stdio混用的不良后果
- Objective-C与Objective-C++的混用代码示例
- Objective-C与Objective-C++的混用代码示例
- string 对象与 C 风格字符串的混用
- C++ extern(2) C++与C的混用
- wxWidgets与MFC的混用
- 写函数的时候要注意字符间的转换
- C语言的内联函数的作用
- MYisam和InnoDB区别以及MySQL引擎简介
- SVN更新文件时无法更新的问题
- C语言三个内存分配函数比较,malloc calloc realloc
- 三步学会Java Socket编程
- android中如何修改系统的声音
- C++结构对齐与内联函数混用的时候要注意的
- Flex DataGrid数字排序
- 想家了。
- spring配置dataSource常用两种
- SQL2008的查询分析器怪异问题,出现长时间“正在进行分析…”或“正在进行执行…”的状态栏
- 联想乐phone Android 开发环境搭建
- PHP,php环境搭建,PHP教程(一)
- Git和ClearCase优缺点比较
- 写一个简单的MTK图片管理工具