我目前正在为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
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
numDigits = 4在clock.cpp中定义。 7_segment.cpp不知道数组数字[]的大小。数组大小需要编译时常量,因此您需要将实际数字放在7_segment.cpp中,或者作为编译时常量放在7_segment.h中。