gpt4 book ai didi

c - 在多个 C 文件中使用外部变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:18 26 4
gpt4 key购买 nike

嗨 StackOverflow 向导:

我有以下三个简单的 C 文件:

// File 1
#include "mainPgm.h"
void file1() {
printf("N1 is now %d.\n", n1);
}

// File 2
#include "mainPgm.h"
void file2() {
printf("N2 is now %d.\n", n2);
}

// File 3
#include "mainPgm.h"
void file3() {
printf("N3 is now %d.\n", n3);
}

当然还有主程序:

#include <stdio.h>
#include <stdlib.h>
#include "mainPgm.h"

int main() {
int n1 = 65536,
n2 = 256,
n3 = 16;

file1();
file2();
file3();
}

最后是一个头文件:

#include<stdio.h>
void file1(), file2(), file3();
extern int n1, n2, n3;

所有这些都是用一个简单的 gcc 命令编译的:

gcc -std=gnu99 -O2 -o jj -Wunused file1.c file2.c file3.c mainPgm.c

这会导致以下错误:

mainPgm.c: In function ‘main’:
mainPgm.c:8:7: warning: unused variable ‘n3’ [-Wunused-variable]
mainPgm.c:7:7: warning: unused variable ‘n2’ [-Wunused-variable]
mainPgm.c:6:7: warning: unused variable ‘n1’ [-Wunused-variable]
/tmp/ccVQjFHY.o: In function `file1':
file1.c:(.text+0x2): undefined reference to `n1'
/tmp/ccZqyI0n.o: In function `file2':
file2.c:(.text+0x2): undefined reference to `n2'
/tmp/ccbpJOpN.o: In function `file3':
file3.c:(.text+0x2): undefined reference to `n3'
collect2: error: ld returned 1 exit status

认为在 mainPgm.h 中定义 n1、n2 和 n3 将用于声明变量,而它们在 mainPgm.c 中的定义将定义它们。不!我哪里出错了?

TIA!

最佳答案

您的所有变量都是 main() 中的局部变量,它们永远不会从该函数外部可见。

将它们移出,使它们成为全局的:

  int n1 = 65536,
n2 = 256,
n3 = 16;

int main() {
file1();
file2();
file3();

return EXIT_SUCCESS;
}

关于c - 在多个 C 文件中使用外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297852/

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