- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试创建一个包含指向常量数组的指针的数组。我在 MPLABX 中使用 C30 V3.31,我正在尝试使用 PIC24FJ128GA310 为我的 LCD 创建一个分段图。这个想法是让所有的 LCD 数字都在常量数组中,然后有一个数组,其中包含指向 LCD 的所有数字的指针,以便于访问。代码段如下所示:
enum SEGS
{
SEG_1A = COM0 |0 , SEG_1B = COM0 |53, SEG_2A = COM0 |33, SEG_K1 = COM0 |44,
SEG_K2 = COM0 |22, SEG_K8 = COM0 |21, SEG_4A = COM0 |62, SEG_4B = COM0 |61,
SEG_5A = COM0 |60, SEG_5B = COM0 |59, SEG_6A = COM0 |58, SEG_6B = COM0 |50,
SEG_7A = COM0 |61, SEG_7B = COM0 |48, SEG_8A = COM0 |59, SEG_8B = COM0 |26,
SEG_9A = COM0 |25, SEG_9B = COM0 |24, SEG_10A= COM0 |23, SEG_10B= COM0 |45,
SEG_2B = COM0 |52, SEG_3A = COM0 |32, SEG_3B = COM0 |51, SEG_S3 = COM0 |24
}
const BYTE DIGIT1[] = {SEG_1A,SEG_1B,SEG_1C,SEG_1D,SEG_1E,SEG_1F,SEG_1G};
const BYTE DIGIT2[] = {SEG_2A,SEG_2B,SEG_2C,SEG_2D,SEG_2E,SEG_2F,SEG_2G};
const BYTE DIGIT3[] = {SEG_3A,SEG_3B,SEG_3C,SEG_3D,SEG_3E,SEG_3F,SEG_3G};
const BYTE DIGIT4[] = {SEG_4A,SEG_4B,SEG_4C,SEG_4D,SEG_4E,SEG_4F,SEG_4G};
const BYTE DIGIT5[] = {SEG_5A,SEG_5B,SEG_5C,SEG_5D,SEG_5E,SEG_5F,SEG_5G};
const BYTE DIGIT6[] = {SEG_6A,SEG_6B,SEG_6C,SEG_6D,SEG_6E,SEG_6F,SEG_6G};
const BYTE DIGIT7[] = {SEG_7A,SEG_7B,SEG_7C,SEG_7D,SEG_7E,SEG_7F,SEG_7G};
const BYTE DIGIT8[] = {SEG_8A,SEG_8B,SEG_8C,SEG_8D,SEG_8E,SEG_8F,SEG_8G};
const BYTE DIGIT9[] = {SEG_9A,SEG_9B,SEG_9C,SEG_9D,SEG_9E,SEG_9F,SEG_9G};
const BYTE DIGIT10[] = {SEG_10A,SEG_10B,SEG_10C,SEG_10D,SEG_10E,SEG_10F,SEG_10G};
const BYTE * const Digits[] ={
DIGIT1,DIGIT2,DIGIT3,DIGIT4,DIGIT5,DIGIT6,DIGIT7,DIGIT8,DIGIT9,DIGIT10};
enum DIGITS {DIG1,DIG2,DIG3,DIG4,DIG5,DIG6,DIG7,DIG8,DIG9,DIG10};
//... FUNCTIONS
void DisplayDigit2(BYTE idx,BYTE Mask)
{
BYTE digit = *Digits[idx];
for(i=0; i<8;i++){
DisplaySeg(digit,(Mask&1));
Mask >>=1;
}
}
void DisplaySeg(BYTE segcode,BOOL state)
{
BYTE mapbyte,com,bitmap,index;
com = (segcode&0xC0)>>6;
segcode = (segcode & 0x3F);
index = segcode/16;
mapbyte = (com * 4) + index;
bitmap = (segcode%16);
if (state)
lcdvals[mapbyte] |= (1<<bitmap);
else
lcdvals[mapbyte] &= ~(1<<bitmap);
}
...
//Calling the function
DisplayDigit2(DIG1,ONE);
谁能帮我确认一下我做对了吗?代码编译没有任何错误或警告,我可以在监 window 口中看到所有变量和指针,但函数 DisplayDigit2() 没有完全执行。
当我单步执行它时,调试器停在第一行,
BYTE digit = *Digits[idx];
并且简单地在状态栏中显示此消息“用户程序已停止”。
最佳答案
你提到
BYTE digit = *Digits[idx];
我认为您正在尝试访问 Digits[0],这将是 DIGIT1[] 数组。您希望在其中使用 for 循环访问所有 7 个值。如果是这样,分配 BYTE digit = *Digits[idx] 可能不起作用。尝试
BYTE * digit = Digits[idx]
因此您将 Digits[0] 内的指针分配给本地指针。您还需要调整 DisplaySeg 代码。另外,我不确定你声明时会发生什么
const BYTE * const Digits[]
刚刚,
const BYTE * Digits[]
应该够了。 :)
希望对你有帮助阿迪亚
关于c - 如何在 Microchip C30 编译器中创建指向常量数组的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12106103/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!