gpt4 book ai didi

c - 头文件和extern关键字

转载 作者:行者123 更新时间:2023-12-02 01:06:23 26 4
gpt4 key购买 nike

我在使用外部变量和头文件时遇到很多问题。我已经阅读了部分书籍并在网上搜索了几个小时,但我一直无法弄清楚。任何有助于理解这个问题的帮助将不胜感激。以下是我尝试编译时的代码和错误

    #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sample.h"

int main()
{
int i;
int gI = 0;
double recv;

i = 10;
gI = i;

recv = AnotherFunc();

return 0;
}

sample.h如下

      #ifndef SAMPLE
#define SAMPLE

extern int gI;
extern double AnotherFunc();

#endif

另一个是函数是

       #include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sample.h"

double AnotherFunc()
{
double someVar;
int test;

test = gI;

someVar = 10.0;
return someVar;
}

当我按以下方式编译时,出现以下错误,我不明白为什么会出现这些错误。 sample.h 有变量声明,它应该在 AnotherFunc 中可见。

          gcc -Wall -ansi -pedantic -c Main.c AnotherFunc.c
gcc Main.o AnotherFunc.o -o test
AnotherFunc.o: In function `AnotherFunc':
AnotherFunc.c:(.text+0x6): undefined reference to `gI'
collect2: ld returned 1 exit status

我只添加了 int gI = 0;因为我想定义它。如果我按以下方式修改代码,我也会在 main 中出错。请看下面。

           #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sample.h"

int main(int argc, char *argv[])
{
int i;
double recv;

i = 10;
gI = i;

recv = AnotherFunc();

return 0;
}

gcc -Wall -Wstrict-prototypes -ansi -pedantic -c Main.c AnotherFunc.c
gcc Main.o AnotherFunc.o -o test
Main.o: In function `main':
Main.c:(.text+0x1b): undefined reference to `gI'
AnotherFunc.o: In function `AnotherFunc':
AnotherFunc.c:(.text+0x6): undefined reference to `gI'
collect2: ld returned 1 exit status

最佳答案

int gI = 0 移到 main() 之外,使其全局可用:

int gI = 0; 
int main()
{
int i;

....
}

关于c - 头文件和extern关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22049689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com