gpt4 book ai didi

c++ - 另一个链接器问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:40 26 4
gpt4 key购买 nike

我在使用基本 C++ 程序时遇到链接问题。不,我不包括 .cpp文件!

这就是正在发生的事情。

主要.cpp:

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

int main() {
std::cout << "Hello!";
}

标题.h:

#ifndef _HEADER_H
#define _HEADER_H

class Something {
public:
printContents();
};

#endif

something.cpp:

#include "header.h"

#include <iostream>

Something::printContents() {
cout << "This class's Contents!!";
}

发生的事情是我得到一个编译器错误:某些标准 C 函数的多个定义,例如 strtod :

g++ -o ... main.o
build/....main.o: In function `strtod':

../MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/stdlib.h:318: multiple definition of `strtod'

build/..something.o:...something.cpp:(.text+0x0): first defined here collect2: ld returned 1 exit status

如果我去掉 #include <iostream>在这两种情况之一中摆脱 cout s,它会编译。这是怎么回事?我正在使用 g++ 和 NetBeans 进行编译。

我在命令行中试过:

g++ *.h *.cpp -o program

同样的事情发生了。

最佳答案

请注意,_HEADER_H 是 C++ 用户代码中的非法名称 - 以下划线和大写字母开头的名称为 C++ 实现保留。这通常不会引起明显的问题,但是当您在实现中使用可能是常见的名称(如 HEADER)时,很可能会出现这种情况。

关于c++ - 另一个链接器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1298557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com