为什么我用了#ifndef却还是提醒重复定义???
我在编多文件程序时,在其中console.h头文件中加上了#ifndef CONSOLE_H
#define CONSOLE_H
……
#endif
然后在GameFunc.cpp和PointFunc.cpp中都使用了console.h,但是在编译时提醒了console.h中的函数在GameFunc.obj中重复定义,用#pragma once也不行,只有在函数前加上static才可以,但是这样做会增大可执行文件,怎样才能解决这种问题???
我的编译器是VS2010专业版
隐袭战龙 发表于 2014-3-5 14:56 static/image/common/back.gif
谢谢,我已经懂了,我已经把函数定义部分改到了cpp文件中
但是还有一个问题,如果希望像微软一样创建一个 ...
简单说:头文件基本没什么变化(基本就是说还是有那么一点点变化的),
然后有2种做法:
(1)把你的所有.cpp文件生成一个.lib文件---这就是静态库
(1)把你的所有.cpp文件生成一个.dll文件+1个.ib文件---这就是动态库
基本概念就是这样,具体的你可以看msdn或者上网搜下VC6 静态库动态库
有很多入门级的教程的 我只是路过打酱油的 本帖最后由 oggplay 于 2014-2-16 14:04 编辑
我看别人都是这样:
#ifndef CONSOLE_H
#define CONSOLE_H 1
#pragma
........
#endif
oggplay 发表于 2014-2-16 13:32 static/image/common/back.gif
我看别人都是这样:
#ifndef CONSOLE_H
#define CONSOLE_H 1
没用,同时使用#ifndef和#pragma once会报错 学习一下路过。。。 求十枚鱼币 按理说你这样就行了呀…… myisland 发表于 2014-2-27 20:09 static/image/common/back.gif
按理说你这样就行了呀……
就是啊,我也是很疑惑 这个真不懂
还要根据源码的报错再分析一下 因为头文件中智能申明函数,不能定义函数(定义函数只能在.c文件中)。你在头文件里定义了函数,所以报错 仰望天上的光 发表于 2014-3-4 19:35 static/image/common/back.gif
因为头文件中智能申明函数,不能定义函数(定义函数只能在.c文件中)。你在头文件里定义了函数,所以报错
谢谢,我已经懂了,我已经把函数定义部分改到了cpp文件中
但是还有一个问题,如果希望像微软一样创建一个自己的函数库,使得每次使用函数都只用包含一个头文件,应该怎样编写头文件? 仰望天上的光 发表于 2014-3-6 10:12 static/image/common/back.gif
简单说:头文件基本没什么变化(基本就是说还是有那么一点点变化的),
然后有2种做法:
(1)把你的所有 ...
谢谢帮助,斑竹英明 仰望天上的光 发表于 2014-3-6 10:12 static/image/common/back.gif
简单说:头文件基本没什么变化(基本就是说还是有那么一点点变化的),
然后有2种做法:
(1)把你的所有 ...
还有,在模板中用的包含模型可以用在这种普通函数中吗??为什么包含模型在模板中可用,但是不能用于普通函数呢??? 隐袭战龙 发表于 2014-3-7 10:38 static/image/common/back.gif
还有,在模板中用的包含模型可以用在这种普通函数中吗??为什么包含模型在模板中可用,但是不能用于普通 ...
C++中的inline函数是可以直接定义在头文件中的,C++中的函数模板也是可以直接定义在头文件中的。他们和普通函数的区别在于:普通函数在编译(非链接)的时候,只是作语法检查,如函数名,参数个数,参数类型等,此时并不要求知道函数的定义(这是链接时期的事情)。
inline函数用于取代C中的宏,,在编译时期,函数的定义就要被直接“嵌入”到调用处。所以,编译时期必须知道函数的定义(不然你怎么嵌入呢?),所以inline函数的定义必须出现在.h文件中。
函数模板,本身是模板,不是函数,是用来生成函数的一个东西。在编译时期,要根据第哦啊用函数模板的地方,推断出类型参数,并根据函数模板产生函数。此时要产生函数,必须能够见到函数模板的定义(不然就没法产生)。所以,函数模板的定义也要出现在.h文件中, 仰望天上的光 发表于 2014-3-9 19:55 static/image/common/back.gif
C++中的inline函数是可以直接定义在头文件中的,C++中的函数模板也是可以直接定义在头文件中的。他们和普 ...
谢谢斑竹,斑竹威武:handshake 来看看是什么........:funk:
页:
[1]