c ++ - 定义const变量不能跨头文件工作

时间:2014-09-11 16:16:18

标签: c++ g++ raspberry-pi

我目前正在为Raspberry Pi制作一个小程序。它涉及7个段显示。为了能够为这个显示器编写更多程序,我决定将与GPIO直接通信的代码提取到一个单独的.cpp和.h文件中。

由于位数是可变的,我使用了一个变量。数字本身存储在一个由8位整数组成的数组中。

这就是我的设置:

7_segment.h:

extern const uint8_t numDigits;
extern uint8_t digits[];

7_segment.cpp:

#include "7_Segment.h"

uint8_t digits[numDigits] = {0x00}; // Line 7

带有"实际"的文件程序:
clock.cpp:

#include "7_Segment.h"

const uint8_t numDigits = 4;

执行时

g++ clock.cpp 7_segment.cpp -o clock -std=c++0x -lwiringPi

我得到了这个输出:

7_segment.cpp:7:27: error: array bound is not an integer constant before ‘]’ token

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

numDigits = 4在clock.cpp中定义。 7_segment.cpp不知道数组数字[]的大小。数组大小需要编译时常量,因此您需要将实际数字放在7_segment.cpp中,或者作为编译时常量放在7_segment.h中。