在 C 中创建 extern char 数组 [英] Create extern char array in C

查看:18
本文介绍了在 C 中创建 extern char 数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在 C 中创建一个外部字符数组?

How to create an external character array in C?

我尝试了各种方法来定义 char cmdval[128] 但它总是说 undefined reference to 'cmdval'

I have tried various ways to define char cmdval[128] but it always says undefined reference to 'cmdval'

我想在 first.c 文件中的 cmdval 中放入一个字符串,并在其他 second.c 文件中使用它.我尝试使用 extern char cmdval[128] 添加一个 global.h 文件,但没有成功.

I want to put a string in cmdval in first.c file and use it in other second.c file. I tried adding a global.h file with extern char cmdval[128] but no luck.

更新:

global.h

extern char cmdval[128];

first.c

#include "global.h"

char cmdval[128];

function(){
   strcpy(cmdval, "a string");
}

second.c

#include "global.h"

function(){
   printf("%s 
",cmdval); //error
}

FAIL :( "未定义的对 `cmdval' 的引用"

FAIL :( "undefined reference to `cmdval'"

我在linux中工作(编辑一个mini OS xv6然后在qemu中编译运行),不知道是不是障碍

I am working in linux (editing a mini OS xv6 then compiling and running it in qemu), I don't know if it is a barrier

推荐答案

需要在.h文件中声明

extern char cmdval[128];

然后在first.c中定义值;

And then define the value in first.c;

char cmdval[128];

然后,任何包含您的 .h 文件的东西,只要它与 first.o 链接,都可以访问它.

Then anything that includes your .h file, provided it is linked with first.o will have access to it.

更详细地说,extern"是说,有一个外部变量 this 将引用...如果你不在某处声明 cmdval,cmdval 将永远不会存在,extern 引用将永远不会引用任何东西.

To elaborate, "extern" is saying, there is an external variable that this will reference... if you dont then declare cmdval somewhere, cmdval will never exist, and the extern reference will never reference anything.

例子:

global.h:

extern char cmdval[128];

first.c:

#include "global.h"
char cmdval[128];

int main() {
  strcpy(cmdval, "testing");
  test();
}

second.c:

#include "global.h"

void test() {
  printf("%s
", cmdval);
}

您可以使用以下代码编译:

You can compile this using:

gcc first.c second.c -o main

或者先制作 .o 文件并链接它们

Or make the .o files first and link them

gcc -c first.c -o first.o
gcc -c second.c -o second.o
gcc first.o second.o -o main

这篇关于在 C 中创建 extern char 数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆