Расширение .c означает, что GCC интерпретирует исходные файлы как код C. Однако заголовок содержит заголовки C++, и поэтому компилятор C дает вам эти первые две ошибки. Чтобы исправить это, вы можете:
- Изменение расширения файлов в
.cpp
вместо .c
, который будет вызывать ваш исходный код должен интерпретироваться как код C++ с помощью GCC. В C++ все, что вы написали, является действительным.
Или:
- Изменение первого заголовка включают в
#include <stdlib.h>
и удалить #include <iostream>
, поскольку нет точного эквивалента iostream в С. На самом деле не нужно любой из этих заголовков для вашей программы, хотя , потому что программа очень проста.
Что касается ошибки цикла, проблема в том, что вы указали переменную i
на этапе инициализации цикла for. Это недопустимо до C99, поэтому вы можете исправить это, перемещая объявление i
выше цикла.
Так рабочая программа может выглядеть следующим образом:
#include <stdlib.h>
#include <stdio.h>
int main(int args, char **argv){
int result[500];
int i;
for (i = 0; i < sizeof(result)/sizeof(result[0]); ++i){
result[i] = 1;
}
return 0;
}
В этом случае я оставил заголовок включает в программе, даже если они не нужны. stdio.h
ближе всего к iostream
вы можете перейти по ссылке C.
Как указано другими, для правильного поведения условие цикла петли также должно быть изменено на i < sizeof(result)/sizeof(result[0])
.
Это потому, что sizeof при использовании с массивом дает размер массива в байтах, который в зависимости от вашей платформы, скорее всего, означает, что вы получите неправильное количество итераций в своем цикле. (Обычно int составляет четыре байта, и так, как вы его написали, ваш цикл будет перебирать 2000 раз вместо 500. Делясь на размер одного элемента вашего массива, вы получаете правильный результат каждый раз .)
Еще лучший подход может состоять из #define
магического числа 500 в начале вашей программы и ссылаться на него таким образом, когда это необходимо.
Основная проблема заключается в том, что у вас действительно есть программа на C++, но вы хотите, чтобы она была программой на C. Вы должны решить, на каком языке вы действительно хотите использовать.
Вам нужно использовать файлы заголовков C++, используя g ++. И для вашего кода вам не нужен заголовочный файл. –
Вы либо код на C++ (тогда вам нужно использовать' g ++ ', а не' gcc') или в C (тогда избавиться от C++ включает в себя). – Nbr44
Чтобы прояснить сказанное выше, cha nge включает в «stdlib.h» и «stdio.h» – Inisheer