C++ 标头中包含的函数未执行,但没有编译错误

C++ 标头中包含的函数未执行,但没有编译错误,c++,C++,我有一个简单的main函数,它调用头中包含的另一个函数 如您所见,main函数包括main.h,initvars.cpp也是如此。我希望我的函数在执行时调用函数initvars,它应该打印到命令窗口“helloworld”,然后等待用户输入关闭窗口 然而,我没有得到这个结果——当我在VS 2015中运行“调试”时,命令窗口会立即打开然后关闭 为什么这段代码不能得到期望的响应 //Source.cpp #include <iostream> #include "main.h" vo

我有一个简单的main函数,它调用头中包含的另一个函数

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

然而,我没有得到这个结果——当我在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
//Source.cpp
#包括
#包括“main.h”
void main(){
void initVars();
}
//main.h
void initvars(){

std::cout如果要调用函数,只需按其名称调用,而不使用此处为void的类型:

void main() {
  initVars();
}
至于为什么没有编译错误,这是因为编译器考虑了

void initVars();
内部的主要功能是作为原型来实现的,是的,原型不仅可以在全局范围内实现,这就是为什么没有错误


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

如果您想调用函数,只需按其名称调用,而不必使用v类型在这里:

void main() {
  initVars();
}
至于为什么没有编译错误,这是因为编译器考虑了

void initVars();
内部的主要功能是作为原型来实现的,是的,原型不仅可以在全局范围内实现,这就是为什么没有错误


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

如果您想调用函数,只需按其名称调用,而不必使用v类型在这里:

void main() {
  initVars();
}
至于为什么没有编译错误,这是因为编译器考虑了

void initVars();
内部的主要功能是作为原型来实现的,是的,原型不仅可以在全局范围内实现,这就是为什么没有错误


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

如果您想调用函数,只需按其名称调用,而不必使用v类型在这里:

void main() {
  initVars();
}
至于为什么没有编译错误,这是因为编译器考虑了

void initVars();
内部的主要功能是作为原型来实现的,是的,原型不仅可以在全局范围内实现,这就是为什么没有错误


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

您的代码无法编译,但运行的是最后一个成功编译的版本

改变

void main() {
    void initVars();
}


我还建议您执行以下操作,以便在代码未能更明确地编译时提醒您。

您的代码未能编译,但运行的是最后一个成功编译的版本

改变

void main() {
    void initVars();
}


我还建议您执行以下操作,以便在代码未能更明确地编译时提醒您。

您的代码未能编译,但运行的是最后一个成功编译的版本

改变

void main() {
    void initVars();
}


我还建议您执行以下操作,以便在代码未能更明确地编译时提醒您。

您的代码未能编译,但运行的是最后一个成功编译的版本

改变

void main() {
    void initVars();
}


我还建议您执行以下操作,以便在代码未能更明确地编译时提醒您。

当我按照您所说的那样执行操作时,我会收到一个编译错误:“未解析的外部符号“void”\uu cdecl initVars(void)”(?initVars@@YAXXZ)在函数“\u main conway C:\Users\[…]”中引用。当我使用原始版本void initVars()时;我没有得到这个编译错误。这是为什么?当我按照你说的那样做时,我得到了一个编译错误:“未解析的外部符号”void u cdecl initVars(void)”(?initVars@@YAXXZ)在函数main conway C:\Users\[…]”中引用。当我使用我的原始版本void initVars()时;我没有得到这个编译错误。这是为什么?当我按照你说的那样做时,我得到了一个编译错误:“未解析的外部符号”void u cdecl initVars(void)”(?initVars@@YAXXZ)在函数main conway C:\Users\[…]”中引用。当我使用我的原始版本void initVars()时;我没有得到这个编译错误。这是为什么?当我按照你说的那样做时,我得到了一个编译错误:“未解析的外部符号”void u cdecl initVars(void)”(?initVars@@YAXXZ)在函数main conway C:\Users\[…]”中引用。当我使用我的原始版本void initVars()时;我没有得到这个编译错误。这是为什么?当我按照你说的那样做时,我得到了一个编译错误:“未解析的外部符号”void u cdecl initVars(void)”(?initVars@@YAXXZ)在函数main conway C:\Users\[…]”中引用。当我使用我的原始版本void initVars()时;我没有收到这个编译错误。这是为什么?您应该在initVars()中将v作为大写字母,以便与函数调用完全匹配。非常感谢您,Ghooo!该死的驼峰案例!当我按照您所说的那样做时,我收到了一个编译错误:“未解析的外部符号”void_ucdecl initVars(void)”(?initVars@@YAXXZ)在函数“\u main conway C:\Users\[…]”中引用。当我使用我的原始版本void initvars()时,我没有收到此编译错误。这是为什么?你应该在initvars()中将v作为大写字母,以精确匹配函数调用。非常感谢你,Ghooo!该死的骆驼案例!何时