У меня есть программа C
, которая выдает сообщение об ошибке:
p3-static-store-class.c:5:1 warning: return type defaults to 'int' [- Wimplicit-int] main()
с выделенным предупреждением и стрелкой, выделяющей m в main()
. Код такой:
#include <stdio.h>
/* function declaration */
void func(void);
static int count = 5; /* global variable */
main()
{
while(count--)
{
func();
}
return 0;
}
/* function definition */
void func(void)
{
static int i = 5; /* local static variable */
i++;
printf("i is %d and count is %d\n", i, count);
}
Моя попытка указать тип возвращаемого значения привела к появлению списка сообщений об ошибках, а синтаксис C
совсем не похож на тот, к которому я привык - так как же это исправить?
Вы знаете, как это должно выглядеть с функцией func
. В чем проблема применения тех же знаний к функции main
?
@Groo У меня странное ощущение, что я как раз делал это ...
Кстати, единственная цель static
- сделать вашу переменную доступной из другого файла .c, который вы будете использовать для компиляции своей программы.
@Nofix Думаю, ты имеешь в виду обратное. Добавление static
делает его недоступным для других файлов .c.
@Gerhardh Действительно, я имел в виду противоположное, извините.
Вам необходимо указать тип возврата для main()
int main()
Также неплохо явно указать, что main()
не принимает аргументов.
int main(void)
Если ваша программа работает в размещенной среде, могут быть полезны аргументы для main. Например, имена файлов. Точное объявление main выглядит так: int main (int argc, char * argv []);
@Mike Если программа не использует никаких параметров, нет необходимости иметь параметр для main
. Следовательно, int main (void)
также является действующей версией. Но в настоящее время пустой список параметров устарел.
main()
->int main(void)