首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c++14中编译

在c++14中编译
EN

Stack Overflow用户
提问于 2014-09-16 02:13:16
回答 2查看 11.5K关注 0票数 7

因此,在我的CSE课程中,我们得到了一个头文件,用于我们正在编写的程序。

不幸的是,我不能让终端使用这个头文件进行编译,它给出了相当多的错误(只使用‘g++’编译)。此外,当我在我的大学里使用PuTTY时,我在使用这个头文件时也会遇到同样的错误。但是,当我使用'g++ -std=c++14‘进行编译时,我没有得到错误。

我试着在我的mac终端上用这个命令编译,但是它显示它不能识别c++14部分。

代码语言:javascript
复制
dhcp-10-202-147-243:hw1pr1 Admin$ g++ -std=c++14 hw1pr1.cpp
error: invalid value 'c++14' in '-std=c++14'

任何关于我如何让它工作的帮助都将不胜感激。希望这一切都是有意义的。

这是当我在终端中使用g++编译我正在讨论的头文件时得到的错误。

代码语言:javascript
复制
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:212:5: warning: 
      Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map>
      [-W#warnings]
#   warning Use of the header <ext/hash_map> is deprecated.  Migrate to ...
    ^
In file included from read_first_name.cpp:1:
./std_lib_facilities_4.h:43:20: error: no matching function for call to object
      of type 'hash<char *>'
            return hash<char*>()(s.c_str());
                   ^~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/__hash:39:12: note: 
      candidate function not viable: 1st argument ('const value_type *'
      (aka 'const char *')) would lose const qualifier
    size_t operator()(char *__c) const _NOEXCEPT
           ^
In file included from read_first_name.cpp:1:
./std_lib_facilities_4.h:112:8: warning: comparison of unsigned expression < 0
      is always false [-Wtautological-compare]
                if (i<0||size()<=i) throw Range_error(i);
                    ~^~
./std_lib_facilities_4.h:118:8: warning: comparison of unsigned expression < 0
      is always false [-Wtautological-compare]
                if (i<0||size()<=i) throw Range_error(i);
                    ~^~
3 warnings and 1 error generated.

当我使用PuTTY和'g++ std=c++14‘时,这个错误不会发生,程序将完全编译。

EN

回答 2

Stack Overflow用户

发布于 2014-09-16 02:30:14

C++标准之间有很多变化,所以在一个修订版中有效的内容不需要在另一个修订版中生效。

g++ defaults to -std=gnu++98 for C++,它是有几十年历史的C++98标准,使用GNU扩展进行了增强(大多数扩展都是一致的)。

选择适当的版本:-std=c++1y -pedantic非常接近于C++14。

What changes introduced in C++14 can potentially break a program written in C++11?

票数 4
EN

Stack Overflow用户

发布于 2015-10-15 06:43:25

看看您所说的必须使用的内容和该.cpp文件的名称格式,我想我是在同一个班级。一年后,看起来是这样,但为了存档,我的解决方案是:

std_lib_facilities.h头随Bjarne Stroustrup教科书一起提供,“编程:使用C++的原则和实践”。对于那些不知道的人来说,Bjarne Stroustrup发明了C++ (他很清楚自己在说什么)。顺便说一句,这本书是学习C++的一个很棒的方法,如果你花时间去读它的话。error头文件只是C++初学者使用的一个方便的头文件,其中包含教科书中使用的所有主要标准库的链接,以及一些帮助解决潜在错误或错误的辅助函数,或者只是为了便于学习(例如std_lib_facilities.h ()函数,它为学生处理简单的异常抛出,或者添加对向量的“越界”检查)。归根结底,这只是一种让学生直接跳到代码中的方法,而不必学习关于头部的细节。Stroustrup与C++保持更新,因此包含了几个需要c++11标准的库。CSCE系希望它的学生(至少在这个早期课程中)连接到系的Unix系统并从那里编译,以避免与下载和更新编译器相混淆。

我碰巧之前已经有了几个C++类,因此已经在我的Ubuntu笔记本电脑上设置了g++。我尽可能长时间地避免包含std_lib_facilities,因为我得到了与Topic Creator Joe相同的错误,其中g++无法识别"c++11“部分(手动包含所需的库工作得很好,直到我们不得不使用教科书中的一个类,该类使用了header的助手函数之一)。最后,我在网上找到了一个帮助主题,建议我简单地将我的g++编译器更新到4.7或更高版本,因为4.6和更低版本不支持C++11 (当然,也不支持C++14)。奇怪的是,与在Mac或Windows上使用的更新相比,它相当复杂,我怀疑确切的过程是否适用,但这是( was ?)可能的问题是:它只是一个旧版本的g++,它需要一个更新来编译C++11和更高版本。我建议搜索一下Mac版的g++/gcc的更新方法。

如果,你知道,其他有这个问题的人偶然发现了这个问题,而且他们的问题还没有得到解决。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25854252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档