-1

我在 Mac OS 10.7 上使用 Xcode 4.1

#include <stdio.h>

int main (int argc, const char * argv[])
{
    int i, j;

    i = 1;
    j = 9;
    printf("i = %d and j = %d\n", i, j);

    swap(&i, &j);
    printf("\nnow i = %d and j = %d\n", i, j);

    return 0;
}

swap(i, j)
int *i, *j;
{
    int temp = *i;
    *i = *j;
    *j = temp;
}

我收到警告“函数“交换”的隐式声明在 C99 中无效

4

3 回答 3

1

在 main 之前声明你的函数:

void swap(int *i, int *j);

/* ... */
int main...

稍后再定义:

void swap(int *i, int *j)
{
    /* ... */
}

或者,您可以合并两者并将整个定义移到main.

于 2012-02-26T13:49:28.540 回答
0

函数名必须在 C99 中使用之前声明。

您可以在之前定义swap函数,也可以在之前main声明函数main

此外,您正在使用该函数的旧式函数定义swap。这种形式是 C 过时的特性,这里是你应该如何定义你的函数:

void swap(int *i, int *j)
{
    ...
}
于 2012-02-26T13:49:44.917 回答
-1

声明一个变量意味着为它们保留内存空间。在使用它之前不需要声明一个变量。每当 VB 遇到新变量时,它都会分配默认变量类型和值。这称为隐式声明

于 2019-02-24T22:59:16.273 回答