头文件中包含的函数未执行,但没有编译错误

时间:2015-09-01 04:10:01

标签: c++

我有一个简单的main函数调用另一个包含在头文件中的函数。

如您所见,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

2 个答案:

答案 0 :(得分:3)

如果你想调用一个函数,你只能通过它的名字这样做而没有这里无效的类型:

void main() {
  initVars();
}

为什么没有编译错误,这是因为编译器认为

void initVars();

在main中作为函数的原型,而yes原型可以在函数内部,不仅在全局范围内,这就是为什么没有错误。

至于命名,最好将包含main函数的文件调用为main.cpp,将包含类的文件调用为classname.h和classname.cpp。另请注意,您需要将类的头文件包含在cpp文件中。

答案 1 :(得分:0)

您的代码无法编译但运行上一个成功编译的版本。

更改

void main() {
    void initVars();
}

void main() {
    initVars();
}

我还建议关注this answer,以便提醒您的代码无法更明确地进行编译。