C++代码::不使用头文件编译的块

C++ Code::Blocks not compiling with header files

本文关键字:文件 编译 代码 C++      更新时间:2023-10-16

晚上好!(早上?)

我想知道是否有人熟悉以下问题。这里有三个文件,分别是Cat.cpp、Cat.h和CatMain.cpp。问题如下:

当我尝试构建Cat.cpp时,我会得到错误"未定义的引用WinMain@16".

当我尝试构建CatMain.cpp时,我会得到speak和jump函数的未定义引用错误。

文件在同一个文件夹中,代码只有一行:

Cat.cpp

#include <iostream>
#include "Cat.h"
using namespace std;
void speak()
{
    cout << "meow" << endl;
}
void jump()
{
    cout << "meow?" << endl;
}

类别h

#ifndef CAT_H
#define CAT_H
void speak();
void jump();
#endif // CAT_H

CatMain.cpp

#include <iostream>
#include "Cat.h"
using namespace std;
int main()
{
    speak();
    jump();
    return 0;
}

这个代码有什么问题吗?或者有人知道这是代码::块还是编译器问题吗?

非常感谢您的帮助=)

到目前为止,您的代码所做的一切都是这样的:

类别.cpp

#include <iostream>
using namespace std;
void speak();
void jump();
void speak()
{
    cout << "meow" << endl;
}
void jump()
{
    cout << "meow?" << endl;
}

CatMain.cpp::

#include <iostream>
using namespace std;
void speak();
void jump();
int main()
{
    speak();
    jump();
    return 0;
}

Cat.cpp缺少一个main方法,因此无法编译。

您的CatMain.cppspeak()jump()没有任何定义,因此出现未定义错误。

要点:CatMain.cpp不知道Cat.cpp想做什么。

int main() { return 0; }

添加到Cat.cpp应该可以编译。

void speak(){
    cout << "defined" << endl;
}
void jump(){
    cout << "defined" << endl;
}

添加到CatMain.app也应该适用。

您的代码很好。最有可能的是,您不想编译单独的文件,而是将项目作为一个整体。您应该将两个cpp都添加到IDE中的项目中,并且链接器会将它们链接在一起以解决这两个问题。