C++-编译并链接多个文件



我有一个具有以下结构的项目:

Item.cpp
Item.h
main.cpp
Makefile

以下源代码在Item.h文件中:

class Item {
public:
Item();
~Item();
};

以下源代码位于Item.cpp文件中:

#include <iostream>
#include "Item.h"
Item::Item() {
std::cout << "Item created..." << std::endl;
}
Item::~Item() {
std::cout << "Item destroyed..." << std::endl;
}

以下源代码是main.cpp文件的内容:

#include "Item.h"
#include <iostream>

int main() {
std::cout << "Initialize program..." << std::endl;
Item item_1();
std::cout << "Hello world!" << std::endl;
return 0;
}

最后,以下源代码是Makefile文件:

CXX = g++
all: main item
$(CXX) -o sales.o main.o Item.o
main:
$(CXX) -c main.cpp
item:
$(CXX) -c Item.cpp
clean:
rm -rf *.o

当我运行make命令,然后用命令./sales.o运行编译后的代码时,我得到以下输出:

Initialize program...
Hello world!

为什么Item类的构造函数方法的输出没有打印在控制台中?我在一些网页中发现,您可以分步骤编译源代码,然后在使用g++时可以将其与-o选项链接,但在这种情况下不起作用。如何一步一步地编译这些源代码,然后将其链接到Makefile中?

我肯定你忽略了这个警告:

warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]

#include "Item.h"
#include <iostream>

int main() {
std::cout << "Initialize program..." << std::endl;
Item item_1;
std::cout << "Hello world!" << std::endl;
return 0;
}

只要去掉括号就行了测试:https://godbolt.org/z/KrdrhvsrW

相关内容

  • 没有找到相关文章

最新更新