使用B. Stroustrup的程序设计文字和第50页的“ hello world”程序会出现错误。 我的“ std_lib_facilities.h”包含文件有问题。

以root用户身份运行“ gcc hworld1.cpp”后,输出为-

In file included from /usr/include/c++/4.4/ext/hash_map:60,
             from std_lib_facilities.h:34,
             from hworld1.cpp:1:
/usr/include/c++/4.4/backward/backward_warning.h:28: warning: #warning This file     includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated.
/tmp/ccpwXUYx.o: In function `main':
hworld1.cpp:(.text+0x14): undefined reference to `std::cout'
hworld1.cpp:(.text+0x19): undefined reference to `std::basic_ostream<char,     std::char_traits<char> >& std::operator<< <std::char_traits<char>  >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/ccpwXUYx.o: In function `__static_initialization_and_destruction_0(int, int)':
hworld1.cpp:(.text+0x41): undefined reference to `std::ios_base::Init::Init()'
hworld1.cpp:(.text+0x46): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccpwXUYx.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

关于如何修复文件的任何建议,也许注释掉哈希部分?

终于有时间开始很高兴,但这似乎比第一个故障排除任务要大一些。 我尝试仅使用iostream作为include。 我正在Ubuntu 11.04上运行它。 也许我需要更新gcc或使用g ++。 不知道有什么可以缓解我的困难。 我试着用...使用...作为我不记得的适当名称(哎呀),使用了“ using ... std”。 任何人都知道权利包括在内。

这是代码-

#include "std_lib_facilities.h"

int main()
{
    cout<<"hiya people\n";
    return 0;
}

===============>>#1 票数:6 已采纳

您应该使用g ++,因为gcc是C编译器(不是C ++)。

===============>>#2 票数:2

这应该解决它。

#include <iostream>

int main()
{
    std::cout <<"hello world!" << std::endl;
    return 0;
}

话虽如此,但本书可能出于某种原因希望您以某种方式进行。 这些错误是链接时间错误,在代码编译后,需要与其他已编译的代码以及头文件进行链接,并且应该有一个lib文件。 您需要将其添加为编译器参数。

编辑:经过进一步检查,似乎缺少的“链接”是标准库,这并不奇怪,因为您使用的是gcc而不是g ++,它将自动与stdlib链接。

===============>>#3 票数:1

请使用头文件iostream,而不要使用您正在使用的头文件。

还要确保使用g ++而不是gcc。 由于gcc是C编译器,而g ++是C ++

  ask by user916843 translate from so

未解决问题?本站智能推荐: