gpt4 book ai didi

c++ - netbeans中多重定义的问题

转载 作者:行者123 更新时间:2023-11-27 23:28:49 24 4
gpt4 key购买 nike

我有 2 个文件,即 fun.cpp 和 main.cpp

fun.cpp

#include <iostream>
using namespace std;

void sum()
{
cout << "hello";
}

main.cpp

#include <cstdlib>
#include <iostream>
#include "fun.cpp"
using namespace std;

int main(int argc, char** argv) {

sum();

return 0;
}

当我在 netbeans 中运行上面的代码时,我得到了这个输出

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory `/home/ravi/NetBeansProjects/ADBMS_v1.5'
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/adbms_v1.5
make[2]: Entering directory `/home/ravi/NetBeansProjects/ADBMS_v1.5'
mkdir -p dist/Debug/GNU-Linux-x86
g++ -o dist/Debug/GNU-Linux-x86/adbms_v1.5 build/Debug/GNU-Linux-x86/fun.o build/Debug/GNU-Linux-x86/main.o
build/Debug/GNU-Linux-x86/main.o: In function `sum()':
/home/ravi/NetBeansProjects/ADBMS_v1.5/fun.cpp:5: multiple definition of `sum()'
build/Debug/GNU-Linux-x86/fun.o:/home/ravi/NetBeansProjects/ADBMS_v1.5/fun.cpp:5: first defined here
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/adbms_v1.5] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
make[2]: Leaving directory `/home/ravi/NetBeansProjects/ADBMS_v1.5'
make[1]: Leaving directory `/home/ravi/NetBeansProjects/ADBMS_v1.5'

BUILD FAILED (exit value 2, total time: 150ms)

谁能解释一下是什么问题?

提前致谢..

最佳答案

不要包含在其他cpp文件中有函数定义的cpp文件。
这会导致相同函数的多个函数定义并破坏 One definition Rule .

将函数的声明放在头文件中,然后将该头文件包含在您要使用该函数的任何源文件中。

fun.h

#ifndef HEADER_FUN_H
#define HEADER_FUN_H

void sum();

#endif //HEADER_FUN_H

fun.cpp

#include "fun.h"
#include <iostream>
using namespace std;

void sum()
{
cout << "hello";
}

main.cpp

#include <cstdlib>
#include <iostream>
#include "fun.h"
using namespace std;

int main(int argc, char** argv)
{
sum();
return 0;
}

关于c++ - netbeans中多重定义的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299225/

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