基本的c程序没有在Ubuntu可靠的编译

时间:2014-12-19 21:31:44

标签: c++

恭敬的问候,

这个基本的C程序不能在Ubuntu trusty 14.04.1 LTS中编译。 编译行是gcc array.c -std = c99(循环的最后一个选项)。我应该用吗?是否有c(而不是c ++)的iostream?

#include <stdio.h>
#include <stdlib.h>
  using namespace std;
  int main(void)
{
  int array[8];
  for(int x=0;x<8;x++)
  {
    std::cin>>array[x];
  }
  for(int x=0;x<8;x++)
  {
    std::cout<<array[x];
  }
  return 0;
}

我收到的错误消息是

array.c:3:3: error: unknown type name ‘using’
   using namespace std;
   ^
array.c:3:19: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘std’
   using namespace std;
                   ^
array.c: In function ‘main’:
array.c:9:9: error: expected expression before ‘:’ token
     std::cin>>array[x];
         ^
array.c:13:5: error: duplicate label ‘std’
     std::cout<<array[x];
     ^
array.c:9:5: note: previous definition of ‘std’ was here
     std::cin>>array[x];
     ^
array.c:13:9: error: expected expression before ‘:’ token
     std::cout<<array[x];
         ^

由于

1 个答案:

答案 0 :(得分:3)

这不是C程序,它是一个C ++程序。将您的文件重命名为array.cpp和/或使用g++代替gcc,不,在C中没有iostream这样的内容。

您的计划的第一个非C部分是

using namespace std;

C中没有namespace

第二部分是

std:cin>>array[x];

它有两个问题,首先是为什么using namespace std;然后std::cin如果你在C ++中使用using namespace它意味着它将在省略时在该命名空间中查找,其次,这也是C ++特有的。 C中没有stream operator

您已加入stdio.h,因此您必须使用fgets或类似功能。并输出printf系列