Как я могу указать правильный «тип возврата»?

У меня есть программа 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 совсем не похож на тот, к которому я привык - так как же это исправить?

main() -> int main(void)
Groo 02.05.2018 09:49
«Синтаксис C совсем не похож на тот, к которому я привык - так что же от этого избавиться?» - старая мудрость гласила, что вам следует изучить синтаксис C.
Groo 02.05.2018 09:50

Вы знаете, как это должно выглядеть с функцией func. В чем проблема применения тех же знаний к функции main?

Gerhardh 02.05.2018 09:58

@Groo У меня странное ощущение, что я как раз делал это ...

mistermarko 02.05.2018 10:02

Кстати, единственная цель static - сделать вашу переменную доступной из другого файла .c, который вы будете использовать для компиляции своей программы.

Nofix 02.05.2018 10:07

@Nofix Думаю, ты имеешь в виду обратное. Добавление static делает его недоступным для других файлов .c.

Gerhardh 02.05.2018 10:34

@Gerhardh Действительно, я имел в виду противоположное, извините.

Nofix 02.05.2018 11:02
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо указать тип возврата для main()

int main()

Также неплохо явно указать, что main() не принимает аргументов.

int main(void)

Если ваша программа работает в размещенной среде, могут быть полезны аргументы для main. Например, имена файлов. Точное объявление main выглядит так: int main (int argc, char * argv []);

Mike 02.05.2018 10:23

@Mike Если программа не использует никаких параметров, нет необходимости иметь параметр для main. Следовательно, int main (void) также является действующей версией. Но в настоящее время пустой список параметров устарел.

Gerhardh 02.05.2018 10:36

Другие вопросы по теме