1

我不知道我的代码有什么问题。我在做一个操作系统时间调度程序,我才刚刚开始编码,当我尝试它只是检查它是否运行正确时,我得到了一个错误。

这是我的功能:

void npefcfs()
{
    int process;
    int bt[10];
    printf("    How many process do you like to use: ");
    scanf("%d",&process);
    printf("\n  -----------------------------------------");
    printf("\n  Please Enter Burst time: ");

    for (int i = 0; i < process; i++)
    {
        int num = 1;
        printf("\nP%d =",num);
        num = num + 1;
        scanf("%d", &bt[i]);
    }

    for (int k = 0; k < process; k++)
    {
        printf("%d", &bt[k]);
    }
}

我一直有一个错误,比如

error C2065: 'k' : undeclared identifier    
error C2143: syntax error : missing ';' before '{'

我检查了很多次。我想我正确地声明了 K 并且不应该缺少 ';'

4

2 回答 2

3
for (int i = 0; i < process; i++)

此语法仅从 C99 开始有效,但根据您的错误代码,您使用的是尚不支持 C99 的 Visual Studio。

您需要i k在块的乞求中声明变量,采用 C89 样式:

void npefcfs()
{    
    int process;
    int i, k;
    //...

然后像这样使用它:

    for (i = 0; i < process; i++)
于 2013-09-08T16:13:59.983 回答
0

C99 特性允许程序员声明一个供循环使用的变量:

for (int k = 0; k < process; k++);

变量k不需要在此语句之前声明(事实上,如果声明k已经存在,则此语句会创建一个仅在循环内使用的版本。) 但是您不能在 C89 模式下使用此功能. 为此,您应该在开始时声明变量 k

void npefcfs()
{

    int process;
    int bt[10];
    int i, k;
    ....

    for ( i = 0; i < process; i++)
    ....
}
于 2013-09-08T16:21:38.693 回答