簡體   English   中英

全局變量,C ++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM