隐含声明

时间:2012-02-26 13:47:23

标签: c implicit-declaration

我在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;
}

我收到警告“隐式声明功能”swap“在C99中无效

3 个答案:

答案 0 :(得分:1)

在main之前声明你的函数:

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

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

稍后再定义:

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

或者,您可以合并两者并在main之前移动整个定义。

答案 1 :(得分:0)

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

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

此外,您正在使用swap函数的旧式函数定义。此表单是C过时的功能,以下是您应该如何定义函数:

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

答案 2 :(得分:-1)

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