头文件中包含的函数未执行,但没有编译错误
Function included in header not executing, but no compile errors
我有一个简单的main函数,它调用另一个包含在header中的函数。
可以看到,main函数包括main.h和initvars.cpp。我希望我的函数,在执行时,调用initvars函数,它应该打印到命令窗口"Hello world",然后等待用户输入关闭窗口。
然而,我没有得到这个结果-当我在VS 2015中运行'debug'时,命令窗口打开然后立即关闭。
为什么这段代码不能引起期望的响应?
//Source.cpp
#include <iostream>
#include "main.h"
void main() {
void initVars();
}
//main.h
void initvars() {
std::cout << "Hello world" << std::endl;
std::cin.get();
}
//initvars.cpp
#ifndef _MAIN_H
#define _MAIN_H
#include <string>
void initVars();
#endif
如果你想调用一个函数,你只需要调用它的名字,而不需要这里的void类型:
void main() {
initVars();
}
至于为什么没有编译错误,这是因为编译器认为
void initVars();
在main内部作为函数的原型,是的,prototype不仅可以在全局作用域内的函数内部,这就是为什么没有错误。
对于命名,最好将包含main函数的文件命名为main.cpp,而将包含类的文件命名为classname.h和classname.cpp。还要注意,您需要将类的头文件包含到您的cpp文件中。
您的代码编译失败,但正在运行最后一个成功编译的版本。
改变void main() {
void initVars();
}
void main() {
initVars();
}
我还建议遵循这个答案,这样你就会在代码编译失败时得到更明确的警告。
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- std::is_base_of表示ctor编译错误
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- Qt Cmake 错误编译"GuiSupportQt not found"
- Opengl 精度转换错误编译错误 E0415
- 库将ARM架构错误编译为架构X64
- RT 音频 Mac 错误 g++ 编译错误
- 错误编译Boost.log
- 错误编译QT创建者 / QT窗口小部件示例
- 错误编译MIPS32
- Visual Studio 2013 中的错误(编译和运行代码)
- 链接错误编译qt项目在visual 2010
- 无法用模板错误编译nsgmls
- 奇怪的错误.编译失败
- 如果有人调用c++中的方法,则强制错误(编译时)
- 来自autoconf测试的错误编译命令
- 时间限制超出错误C++编译
- SFML 2.3 和 CodeBlocks 错误编译