当前位置:  开发笔记 > 编程语言 > 正文

程序不能使用较新版本的g ++进行编译

如何解决《程序不能使用较新版本的g++进行编译》经验,为你挑选了2个好方法。

我有以下源代码.这在视觉工作室和g ++ 3.4.6中编译得很好; 但不是用g ++ 4.4.3(在较新的ubuntu机器上).较新的编译器要求我明确包含使用atoi.我只想弄清楚可能导致此行为的原因.是先前包含cstdlib的sstream头文件,不再这样做了.或者是已更改的编译器行为.

#include 

int main()
{
  char str1[]="123";
  int i = atoi(str1);

  printf ("value = %d",i);
  return 0; 
}

James McNell.. 10

您还需要包括printf().

从技术上讲,如果您包含表单的标题而不是,则还需要使用标准库中的名称限定std::.尽管如此,很多标准库实现都是放宽的,并且还将名称放入全局命名空间.

它依赖于实现,哪些标头包含在哪个标头中,因此您应该始终确保包含所需的所有标头,而不是假设它们将自动包含在内.



1> James McNell..:

您还需要包括printf().

从技术上讲,如果您包含表单的标题而不是,则还需要使用标准库中的名称限定std::.尽管如此,很多标准库实现都是放宽的,并且还将名称放入全局命名空间.

它依赖于实现,哪些标头包含在哪个标头中,因此您应该始终确保包含所需的所有标头,而不是假设它们将自动包含在内.



2> wkl..:

我在Debian上使用GCC 4.4.5,并且标题已更改,因此您不会引入必要的标头.你需要#include 并且#include 得到atoi并且printf,因为编译器抱怨两者都丢失了.

#include 
#include 
#include 


int main()
{
  char str1[]="123";
  int i = std::atoi(str1);

  std::printf ("value = %d",i);
  return 0;
}

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有