码迷,mamicode.com
首页 > 其他好文 > 详细

那些cpp细节

时间:2014-12-05 20:57:11      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:ar   使用   on   文件   log   ad   ef   amp   br   

1.char*类型的隐式转化成bool类型
void a(bool input)
{
cout<<"I amd first"<<endl;
cout<<input<<endl;
}
void a(const string &input)
{
cout<<"I amd second"<<endl;
cout<<input<<endl;
}
int main(int argc,char **argv)
{
a("str"); // 是调用第二个a函数吗?
a(string("str"));
return 0;
}
char*类型的"str"居然被隐式转化成了bool类型

2. #pragma pack(1) 成对使用:
先来介绍一下背景,我这里有个server,会在运行时调用一个so,正常情况下都一切正常,但是在引用了一个第三方给的头文件之后,在调用so的一个函数的时候就会core掉。百思不得其解之下,去看了一下那个第三方头文件的定义:
#ifndef HEADER_OPENAPILOG_PROTOCOL
#define HEADER_OPENAPILOG_PROTOCOL
#pragma pack(1)
//一些结构体定义
#endif
只调用了#pragma pack(1)却没有在文件结束时调用#pragma pack()!而我的主调server虽然重新编译了,但是so却没有重新编译,导致其共用的结构体一个做了字节对齐,一个没有做。

那些cpp细节

标签:ar   使用   on   文件   log   ad   ef   amp   br   

原文地址:http://www.cnblogs.com/xiao0913/p/4147372.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!