社区
C语言
帖子详情
我的编译抱怨说出现了非法的函数重新定义,但实际上这个函数只定义了一次。
lettermail6
2003-09-13 10:10:26
请问是什么原因?
...全文
21
13
打赏
收藏
我的编译抱怨说出现了非法的函数重新定义,但实际上这个函数只定义了一次。
请问是什么原因?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
robertnet
2003-09-13
打赏
举报
回复
帖出来。
flashworm
2003-09-13
打赏
举报
回复
最大的可能是与库函数同名了
C语言的标示符区分大小写,把函数名稍做改动,与库函数同名也是可以通过编译的
pzytony
2003-09-13
打赏
举报
回复
头文件多次调用
而头文件中未加上 #ifndef *****
#define ****
---------------------------------
#endif
fancy_kevin
2003-09-13
打赏
举报
回复
如果包含了多个文件而没有用条件编译来控制的话,文件之间的引用会造成重定义,另外,有的SDK会重定义以前的函数,不恰当的宏定义或搜索顺序也会造成重定义。
oldfhp
2003-09-13
打赏
举报
回复
头文件
lettermail6
2003-09-13
打赏
举报
回复
还有其它原因吗?
liuyuw
2003-09-13
打赏
举报
回复
可能你定义的函数与库函数相同名字了
比如你定义printf的话肯定出错。
小笨和漂向北方
2003-09-13
打赏
举报
回复
是否和库函数重名?
sakurar
2003-09-13
打赏
举报
回复
看看是不是多次包含了一个头。
bailingke
2003-09-13
打赏
举报
回复
90%是头文件的问题
这种问题我遇到了N次
很多人都问过我的
搬不搬砖
2003-09-13
打赏
举报
回复
同意
freepl
2003-09-13
打赏
举报
回复
我觉得很可能是pzytony(507)说的那种情况.
#ifndef A_H
#define A_H
.....
#endif //A_H
ejiue
2003-09-13
打赏
举报
回复
很可能是函数定义在头文件.h或.hpp中。
应当把声明和定义区别开来。
深入探索c/c++
函数
(2)---普通成员
函数
调用的基本过程
c++的成员
函数
根据其调用的不同,大致可以分为4类:内联成员
函数
,静态成员
函数
,虚成员
函数
和上述3种以外的普通成员
函数
。从本质来
说
类成员
函数
和全局
函数
在调用上并没有差别,非内联
函数
的在调用时,基本上都包括如下的过程:
函数
的参数入栈,eip指针值入栈,然后跳到
函数
体的地址,执行
函数
体对应的代码,执行完毕调整栈帧。下面就按照上述4个分类进行分析,先来
说
一下普通的成员
函数
: 普通的成员
函数
在
条款11.优先选择删除
函数
,而不是private未
定义
函数
优先选择删除
函数
,而非private未
定义
函数
如果你写了代码给其他程序员用,并且你想阻止它们调用某个特定
函数
的话,那你只需不要声明该
函数
即可。
函数
未经声明,不可调用。但是有时候c++会替你声明
函数
,而如果你要阻止这些客户调用这些
函数
。 这种情况仅仅发生在“特种成员
函数
”身上,即c++会在需要时自动生成的成员
函数
。 C++98为了阻止这些
函数
被使用,采取的做法是将其声明为private,并且不去
定义
它们。 在C++中,对输入流和输出流进行复制是不可取的。为了让输入流和输出流成为不可复制的。 在C++98中的
Effective C++ 第二版 33)内联 34)将
编译
依赖降至最低
条款33 明智地使用内联 内联
函数
: 看起来像
函数
, 运作起来像
函数
, 比宏macro要好(条款1), 使用时还不需要承担
函数
调用的开销; 避免
函数
调用的开销仅仅是一方面; 为了处理那些没有
函数
调用的代码,
编译
器优化程序本身进行了专门的设计; 当内联一个
函数
时,
编译
器可以对
函数
体执行特定环境下的优化工作; 程序世界和现实生活一样, 没有免费午餐, 内联
函数
也不例外; 内
取消预处理器
定义
_取消
定义
C ++预处理器
取消预处理器
定义
只有两种语言:人们
抱怨
的语言和没人使用的语言-Bjarne Stroustrup 我喜欢那句话。 它解释了JavaScript和Haskell。 通过这种方式,预处理器是一种很棒的语言,因为人们经常使用它。 从来没有将它与C和C ++分开考虑,但是如果是这样,它将成为TIOBE上的第一语言。 预处理器非常有用且普遍。 事实是,要在某种程度上不涉及预处理器的情况下,真的很难编...
C++基础要点摘记
1.
定义
是创建与符号关联的实体。声明是让符号为程序所知。 声明变量的同时也就完成了变量的
定义
,只有声明外部全局变量的情况是例外,当一个文件想要使用其他文件
定义
的全局变量,则必须声明。
函数
和变量的声明不会分配内存, 但是
定义
会分配相应的内存空间,变量名就是对相应的内存单元的命名
函数
和变量的声明可以有很多次, 但是
定义
最多只能有
一次
2.将static全局变量写在头文件中,所有头文件的操作
函数
都会共享这个变量。但如果是在源文件中去操作这个静态全局变量,则这个静态全局变量只能在当前文件有效,但是在另外
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章