构造函数问题
如图,两个构造函数的定义放在.h文件中会出现如图中的错误,但是剪贴到cpp中,构造时就会顺利通过,请问这是为什么?
你需要了解一下编译的过程: 预编译:编译器一遍或者多遍扫描文件,识别宏定义、变量、结构、类定义等信息,并将头文件嵌入到引用的文件中; 然后是编译,主要包括词法分析、语法分析、中间代码生成、优化、连接等等步骤 可见,头文件作中会被嵌入到C文件中,那么在你的C文件中,由于引用了很多头文件,头文件之间又有可能相互引用,因此可能导致你的C文件同一个函数、方法、变量多次被嵌入,自然就会出现重复定义的问题。 因此编译的时候会是多重定义的错误提示 一楼的说是一种解决方案,它通过条件编译的方法确保了重复定义不会出现; 另一种方法就是,将各类定义全部放在c文件中,因为c文件是不会被嵌入的,这就最大可能性避免了重复定义的可能行。
其实可以在头文件中定义,但是,你必须得确保你的头文件只被#include了一次,因为每#include一次就会定义一次,就是重定义了,所以,一般定义是不写在头文件中的!
如果是放在.h文件里,要用下面的格式: #ifnde xxxx #define xxxx 1 /* .h文件原来的内容 */ #endif
问:为什么出现有错误~!文件是TianJi.为什么出现有错误~!文件是TianJi.
答:==== 重装 ====详情>>
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>