外部全局变量的例子 - 错误

问题描述 投票:0回答:1

我想知道我在下面的例子中犯了什么错误。有三个文件:main.c, libreria_mia.c和libreria_mia.h。

// main.c
#include <stdio.h>
#include "libreria_mia.h"

int x = 5;

int main()
{
    int y = quadrato();
    printf("%d\n", y);
    return 0;
}


// libreria_mia.h
extern int x;
int quadrato(void);


// libreria_mia.c
int quadrato(void)
{
    x = x * x;
}

错误。

libreria_mia.c:5:2: error: ‘x’ undeclared (first use in this function)

谢谢你的时间。

c compiler-errors global-variables extern
1个回答
1
投票

当你编译libreria_mia.c时,编译器不会自动知道libreria_mia.h或其中的声明。要提供一个声明给 x 在编译libreria_mia.c时,libreria_mia.c必须包含一个声明了 x 或有声明的 x 直接放在libreria_mia.c中。

此外,常规的做法是在头文件中使用名为 档案.h中定义的东西进行声明。档案.c(不一定是所有定义在 档案.c,只是那些打算在它之外使用的)。) 但你有 x 在libreria_mia.h中声明,但在main.c中定义。通常情况下,我们会在libreria_mia.h中定义 x 中或在main.h中声明,通常前者,因为main.c更常见的是程序中所有其他东西的用户,而不是提供者。

© www.soinside.com 2019 - 2024. All rights reserved.