全局变量,c ++

Sev*_*ays 0 c++ global-variables

我尝试了很多解决方案,但无法使我的程序正常运行.

main.h

short NWMP_acc[3];
short NWMP_gyro[3];
Run Code Online (Sandbox Code Playgroud)

main.cpp中

printf_( "%i,%i,%i, g\n", NWMP_gyro[YAW],NWMP_gyro[PITCH],NWMP_gyro[ROLL]);
Run Code Online (Sandbox Code Playgroud)

other.cpp

#include "main.h"
NWMP_gyro[YAW]   = (((buf[3]>>2)<<8) +  buffer[0]);//multiple definition of `NWMP_gyro'
Run Code Online (Sandbox Code Playgroud)

如果我改为"extern short NWMP_acc [3];" 比我得到一个错误"未定义引用`NWMP_acc'"

Fle*_*exo 6

你需要有和没有 extern

在您的标题中,您需要:

extern short NWMP_acc[3];
extern short NWMP_gyro[3];
Run Code Online (Sandbox Code Playgroud)

但是在你的一个".cpp"文件中你还需要:

short NWMP_acc[3];
short NWMP_gyro[3];
Run Code Online (Sandbox Code Playgroud)

这样做的原因是extern关键字可以粗略地被认为是"我保证在一个文件中的某个地方存在一个看起来像这样的真实物品".