c++ - header 中包含的函数未执行,但没有编译错误

标签 c++

我有一个简单的主函数调用另一个包含在 header 中的函数。

如您所见,main 函数包括 main.h,initvars.cpp 也是如此。我希望我的函数在执行时调用函数 initvars,它应该打印到命令窗口“Hello world”,然后等待用户输入关闭窗口。

但是,我没有得到这个结果 - 当我在 VS 2015 中运行“调试”时,命令窗口打开然后立即关闭。

为什么此代码无法引发所需的响应?

//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 main() {
  initVars();
}

至于为什么没有编译错误,这是编译器考虑的

void initVars();

在 main 内部作为函数的原型(prototype),是的,原型(prototype)不仅可以在全局范围内在函数内部,这就是没有错误的原因。

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

关于c++ - header 中包含的函数未执行,但没有编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32323380/

相关文章:

c++ - 在 C++ 中重载不同类型的比较运算符

c++ - 接受容器类型作为输出参数的方法的协议(protocol)/约定

c++ - 在 C++ 中遍历自定义结构列表的小问题

c++ - 一旦使用 pthread 满足条件,for 循环就不会终止

c++ - 我如何告诉 cppCheck 不要将函数视为分配函数?

c++ - 使用指针而不是引用时出现段错误访问指向结构的指针数组

C++ 无限循环瓶颈?

c++ - 如何从边缘制作二叉树?

c++ - 不能使用线程构造函数

c++ - 奇怪的调试器问题?