Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Почему не выполняется вторая функция написанная после main?

#c #функции


В нижеприведённом коде вторая функция не выполняется, будто бы её там вообще нет.
Ума не приложу, в чём дело. Использую Dev-C++ 4.9.9.2.

int main()
{
    int a;
    a=30;
    printf("%d\n\n",a);
    system("PAUSE");        
    return a;
}

int kek()
{
    int b;
    b=40;
    printf("%d\n\n",b);
    system("PAUSE");
    return 0;
}

    


Ответы

Ответ 1



Точкой входа в программу является функция main. Она вызывается при запуске вашей программы. В C функция main без параметров должна быть объявлена как int main( void ) { //... } Из стандарта C (5.1.2.2.1 Program startup): 1 The function called at program startup is named main. The implementation declares no prototype for this function. It shall be defined with a return type of int and with no parameters: int main(void) { /* ... */ } Все остальные функции получают управление только лишь, если они вызываются в вашей программе. Если вы используете библиотечные функции, то вы должны включить в программу заголовки, где эти функции объявляются. Ваша программа могла бы выглядеть следующим образом: #include #include int kek(); int main( void ) { int a; a=30; printf("%d\n\n",a); kek(); system("PAUSE"); return a; } int kek() { int b; b=40; printf("%d\n\n",b); system("PAUSE"); return 0; }

Ответ 2



Возможно так будет работать так как Вы хотели: int f1(void) { int a; a=30; printf("%d\n\n",a); system("PAUSE"); return a; } int f2(void) { int b; b=40; printf("%d\n\n",b); system("PAUSE"); return 0; } int main(void) { f1(); f2(); } В main вызываем необходимые функции. Порядок выполнения можно также изменить с помощью директивы #pragma startup имя_функции приоритет=64-255 тем самым будут выполняться иные функции в желаемом порядке.

Комментариев нет:

Отправить комментарий