从函数调用函数

时间:2018-12-04 23:29:14

标签: c function

我正在尝试在C中构建一个 CARDIAC计算机模拟器,现在我需要从一个函数中调用一个函数。


在下面的代码中,我尝试在函数JAZ()中调用函数CARDIAC(),并且出现一个明显的错误,因为它不是预定义的,所以我无法调用它。
我需要做什么才能使已编译的程序 printf “到达点了!”

这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int input;

void CARDIAC(int* ptr)
{
    int input = *ptr;

    while(input<900)
    {
        if(input<100 && input>=0)
        {
            // INP();
        }
        else if(input<200 && input>99)
        {
            printf("Point reached!\n");
            break;
        }
        else if(input<300 && input>199)
        {
            // LDA();
        }
        else if(input<400 && input>299)
        {
            // LDI();
        }
        else if(input<500 && input>399)
        {
            // STA();
        }
        else if(input<600 && input>499)
        {
            // STI();
        }
        else if(input<700 && input>599)
        {
            // ADD();
        }
        else if(input<800 && input>699)
        {
            // SUB();
        }
        else if(input<900 && input>799)
        {
            JAZ();
        }
        else
        {
            // HRS();
        }
    } 
    printf("Done\n");
}

void JAZ()
{   
    input = 180;
    CARDIAC(&input);
}

int main()
{
    input=820;
    CARDIAC(&input);

    return 0;
}


这是我得到的输出:

test.c: In function ‘CARDIAC’:
test.c:47:4: warning: implicit declaration of function ‘JAZ’ [-Wimplicit-function-declaration]
    JAZ();
    ^~~
test.c: At top level:
test.c:57:6: warning: conflicting types for ‘JAZ’
 void JAZ()
      ^~~
test.c:47:4: note: previous implicit declaration of ‘JAZ’ was here
    JAZ();
    ^~~

3 个答案:

答案 0 :(得分:1)

尝试将JAZ()函数移到CARDIAC()之前

答案 1 :(得分:1)

您必须将函数原型放在两个函数之前,

re.sub()

答案 2 :(得分:0)

  

我需要做什么才能使已编译的程序打印“到达点!”

您的函数中的Jaz输入= 280;因此不会打印出来,因为您在else if语句else if(input<200 && input>99)中写入280> 200时。

 void JAZ()
 {   
     input = 280;       //you must change this value
     CARDIAC(&input);
 }  

另一个问题是循环不会结束。

编辑

我真的不知道您打算在该函数中使用while做什么,但是如果您想结束它,input必须达到900或更高,才能停止在CARDIAC函数中声明的while循环。 while(input<900)

下面是打印“到达点”的代码:

 #include <stdio.h>
 #include <stdlib.h>

int input;
void JAZ();

void CARDIAC(int* ptr)
{
    int input = *ptr;

    //while(input<900)
    //{
        if(input<100 && input>=0)
        {
            // INP();
        }
        else if(input<200 && input>99)
        {
            printf("Point reached!\n");
         //   break;
        }
        else if(input<300 && input>199)
        {
            // LDA();
        }
        else if(input<400 && input>299)
        {
            // LDI();
        }
        else if(input<500 && input>399)
        {
            // STA();
        }
        else if(input<600 && input>499)
        {
            // STI();
        }
        else if(input<700 && input>599)
        {
            // ADD();
        }
        else if(input<800 && input>699)
        {
            // SUB();
        }
        else if(input<900 && input>799)
        {
            JAZ();
        }
        else
        {
            // HRS();
        }
    //} 
    //printf("Done\n");
}

void JAZ()
{   
    input = 180;
    CARDIAC(&input);
}


int main()
{
    input=820;
    CARDIAC(&input);

    return 0;
}