易截截图软件、单文件、免安装、纯绿色、仅160KB

C和C++混合编程相关问题解决方法

一 :解决C或C++中的multiple definition of问题
server.cpp
clientp2p.cpp
#include "exception.h"
#include "clientp2p.h"
clientp2p.h
中写有所有的全局变量及其初始化值
和函数声明
1.server.cpp中:
引用

#include "clientp2p.h"
int Main(....)
{
...
}
2.clientp2p.cpp
中,
也引用

#include
"clientp2p.h"
....
3. file_2.cpp
#include "global.h"
...
 
G++在编译的时候就会出错:
clientp2p.o:(.bss+0x0): multiple definition of `ClientList'
server.o:(.bss+0x0): first defined here
原因是因为在多次包含
clientp2p
.h时重复定义了变量和函数。
解决方法:
方法一:

clientp2p
.c(或.cpp)  中声明变量(不初始化),然后头文件
clientp2p
.h中在所有的变量声明前加上extern
如 extern int flag;
然后在其他需要使用全局变量的 cpp文件中包含.h 文件而不要包含 .cpp 文件。编译器会为global.cpp 生成目标文件,然后连接时,在使用全局变量的文件中就会连接到此文件 。
方法二:

clientp2p
.h中加入防止多次重复定义的宏判断符号
你的.H里面要加上条件编译
#ifndef  GLOBAL
#define GLOBAL
XXXXX
XXXXX
#endif
记住:在ifndef时一定要在第一行,前边不要有任何的注释或语句。
二:
undefined reference to `std::ios_base::Init::Init() 解决
在linux下编译c++ 程序要使用g++ 编译器,如果你要是使用gcc编译器就会有上面的报错信息,只要在在gcc后加上 -lstdc++就ok了
eg:  gcc  example.c -lstdc++


相关文档:

[收藏]C/C++数组名与指针区别深层探索

根本原因在与左值和右值
char a[10]=“hello”;
sizeof(a);//数组名做左值,具有数组名的属性,是一个指向数组首地址的常量指针
strcpy(a,"abc");//数组名做右值,退化为普通的指针
原文链接:
 http://hi.baidu.com/%D2%C0%BD%A3%D0%F9/blog/item/7bbf36966c92f36a54fb9663.html
作者:宋宝华 e ......

第六章答案 c primer plus

 6.1 编写一个程序,创建一个具有26个元素的数组,并在其中存储26个小写字母,并让该程序显示该数组的内容.
#include <stdio.h>
int main(void)
{
 char a[26] = {'a', 'b', 'c', 'd', 'e', 'f',
     'g', 'h', 'i', 'j', 'k', 'l',
     'm', 'n', 'o', 'p ......

C/C++ 打开PDF文档

 wchar_t wsWorkingDir[256] = _T("");
 CString strPDF(_T(""));
 ::GetCurrentDirectory(256, wsWorkingDir);
 strPDF.Format(_T("%s"), wsWorkingDir);
 if (strPDF.GetAt(strPDF.GetLength()-1) != '\\')
 {
  strPDF += '\\';
 }
 strPDF += "doc\\my.pdf" ......

C/C++中的日期和时间 time_t与struct tm转换

 摘要:
本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。
关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号