[英]Global variables,c++
我嘗試了許多解決方案,但無法使我的程序正常工作。
主文件
short NWMP_acc[3];
short NWMP_gyro[3];
main.cpp
printf_( "%i,%i,%i, g\n", NWMP_gyro[YAW],NWMP_gyro[PITCH],NWMP_gyro[ROLL]);
other.cpp
#include "main.h"
NWMP_gyro[YAW] = (((buf[3]>>2)<<8) + buffer[0]);//multiple definition of `NWMP_gyro'
如果我更改為“ extern short NWMP_acc [3];” 比我得到一個錯誤“對“ NWMP_acc”的未定義引用”
無論是否需要extern
都需要
在標題中,您需要:
extern short NWMP_acc[3];
extern short NWMP_gyro[3];
但是在您的“ .cpp”文件之一中,您仍然需要:
short NWMP_acc[3];
short NWMP_gyro[3];
這樣做的原因是,可以將extern
關鍵字粗略地理解為“我保證在一個文件中的某個地方存在看起來像這樣的真實事物”。
如果將數組聲明為extern
(如果要跨翻譯單元使用全局變量,則必須這樣做),則必須在一個翻譯單元中定義它。 因此,例如:
// main.h
extern short NWMP_acc[3]; // declare
// main.cpp
#include "main.h"
short NWMP_acc[3]; // define
// other.cpp
#include "main.h"
void foo() {
std::cout << NWMP_acc[0] << std::endl; //just use, don't define again
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.