正在添加到结构的外部数组.(C编程语言)



我对C编程很陌生,所以如果这看起来太初级,我很抱歉。这是我的问题的缩小版本,我基本上是在尝试将一个结构元素存储在索引0 处名为r_a的外部数组中

头文件:

  struct rescue_asset {
      char callsign[31];
      char type;
  };
  extern struct rescue_asset r_a[51]; 

主文件:

  #include "header_file.h"
  int main(int argc, char** argv) {
      strcpy(r_a[0].callsign, "ID");
  }

为什么这不起作用?解决方案是什么?

Extern声明数组但不定义它。在头文件中定义它,并在主文件中使用它

//Header file
struct rescue_asset {
char callsign[31];
char type;
}r_a[51]; 
//Main file
#include<header.h>
extern struct rescue_asset r_a[51];
int main(int argc, char** argv) {
strcpy(r_a[0].callsign, "ID");
return 0;
}

您错过了;从结构块的末尾。

正确:

struct Foo {
    int j;
};

extern只是声明了数组,您必须通过放置来为数组保留内存空间

struct rescue_asset r_a[51]; 

在主源文件中,例如

struct rescue_asset r_a[51];

你应该在某个地方定义这个变量,也许你可以在main.cpp中定义。因为在头文件中,您必须将变量定义为extern。

最新更新