头文件的包含
inclusion of header files
我有一个名为functions.h....的文件现在我知道在头文件中定义函数是不明智的,但与突然出现的问题相比,这是我最不关心的…
我在functions.h中定义了一个名为
的函数 void sayhi()
{
cout<<"hi";
}
现在我创建了一个lines.h文件,它的函数在lines.cpp文件中定义…在lines.cpp文件中,我包含了functions.h…并使用sayhi();在lines类的构造函数中…然后在mymain.cpp(包含int main)中,我再次包含functions.h,并在main中调用sayhi();
但是当我编译程序时,它在mymain.cpp中显示了一个错误,告诉我sayhi()已经在lines.obj中定义了…你能指出我做错了什么吗?
解决方案是在functions.h中声明函数,然后在functions.cpp中定义,按照自然的方式。
使函数inline
避免了这种多重定义问题。
,
inline void sayhi()
{
cout<<"hi";
}
这个链接可能对你有帮助。
特别地,它引用了ISO c++标准的7.1.2节:
内联函数应在每个翻译单元中定义在任何情况下都应使用并具有完全相同的定义(3.2) .
相关文章:
- vcruntime.h 从 Windows 包含文件夹中丢失?
- 禁止显示有关包含文件中 #pragma 包的警告
- 无法打开包含文件:在 vs2017 上'QtWidgets/qtwidgetsglobal.h'
- 包含文件 <sched_yield.h>在我的 RHEL 5 上找不到
- 尝试使用 MSVC 从源代码构建 qt 创建器:无法打开包含文件:"stddef.h":没有这样的文件或目录
- 无法打开包含文件'Graphics.hpp'没有这样的文件或目录,Visual Studio的其他包含不起作用
- 为什么 C++ 编译器在"c:program filesgnu emacsinclude"中查找包含文件?
- 包含文件中的 Typdef "未在此范围内声明"
- 错误: C1083: 无法打开包含文件:"boost/asio.hpp": 没有此类文件或目录
- SFML c ++ 当包含文件内游戏中发生事件时,如何使用铃声函数为我的游戏创建声音类?
- 在Windows上设置CMake和vcpkg时出错"无法打开包含文件"
- 致命错误 C1083:无法打开包含文件:"GL/glew.h":没有此类文件或目录
- Qt自动生成的.rc文件无法打开包含文件'windows.h'
- Visual Studio 停止识别任何包含文件
- 无法打开包含文件:"签证.h"
- 如何检查每个头文件是否包含必需的包含文件?
- Protobuf:无法在 message.pb.h 文件中打开包含文件 common.h
- extern 关键字在包含文件头文件C++
- 错误:无法打开包含文件:"MQTTAsync.h":没有此类文件或目录
- #include "date.h" 创建错误 E1696 无法打开源文件"date.h",也无法打开包含文件:没有这样的文件或目录