gpt4 book ai didi

c++ - ld 返回 1 退出状态链接器错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:50 24 4
gpt4 key购买 nike

我正在尝试实现一个简单的 C++ 程序,该程序采用带标点符号的输入字符串并返回删除这些标点符号的输出字符串。该程序是

#include<iostream>
#include<cctype>
using namespace std;
int main()
{
int index=0;
string sequence1,sequence2;
cout<<"enter the sequence"<<endl;
getline(cin,sequence1);
for(index=0;index<20;++index)
if(!ispunct(sequence1[index]))
sequence2[index]=sequence1[index];
cout<<sequence2<<endl;
return 0;
}

它给我一个错误说ld returned 1 exit status。总的错误是

progprac: In function `_start':
(.text+0x0): multiple definition of `_start'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o:(.text+0x0): first defined here
progprac: In function `_fini':
(.fini+0x0): multiple definition of `_fini'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o:(.fini+0x0): first defined here
progprac:(.rodata+0x0): multiple definition of `_IO_stdin_used'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o:(.rodata.cst4+0x0): first defined here
progprac: In function `__data_start':
(.data+0x0): multiple definition of `__data_start'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o:(.data+0x0): first defined here
progprac: In function `__data_start':
(.data+0x8): multiple definition of `__dso_handle'
/usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o:(.data+0x0): first defined here
progprac: In function `_init':
(.init+0x0): multiple definition of `_init'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o:(.init+0x0): first defined here
/tmp/ccpOfw2A.o: In function `main':
progprac.cc:(.text+0x0): multiple definition of `main'
progprac:(.text+0xe4): first defined here
/usr/lib/gcc/x86_64-linux-gnu/4.6/crtend.o:(.dtors+0x0): multiple definition of `__DTOR_END__'
progprac:(.dtors+0x8): first defined here
/usr/bin/ld: error in progprac(.eh_frame); no .eh_frame_hdr table will be created.
collect2: ld returned 1 exit status

我在网上查了一下,你声明了一个函数但没有定义它是一个链接器错误。但是我没有犯过这样的错误。错误是什么?

最佳答案

你错过了编译行中的-o

g++ -o progprac progprac.cc

解决第一个问题后,

您创建了一个空白字符串 sequence2 并在您的 for 循环中进行了 if 检查以将值赋给 sequence2 并且你使用 index 作为它的下标。在某些情况下,(在有标点符号的地方,您不会为 sequence2 的字符位置分配任何内容)。这可能是麻烦的根源,因为字符串仍然是 ""

如果您使用 sequence2.at(index),它会显示 out of range,这意味着该字符串在那些位置不存在 [没有字符]。

如果您使用 + 运算符,则可以消除这些问题,因为您将字符连接到现有字符串(以 "" 开头)

         sequence2 += sequence1[index];

关于c++ - ld 返回 1 退出状态链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17024728/

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