【问题标题】:error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ProgDB'错误:在 'ProgDB' 之前应有 '='、','、';'、'asm' 或 '__attribute__'
【发布时间】:2015-11-17 14:19:15
【问题描述】:

编译时出现此错误,但我找不到问题。

../DB.c:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'PatKarten'

这是一些代码:

    const uint8_t PatKarten[29][16] PROGMEM =
    {
//  01  |  02  |  03  |  04  |  05  |   06  |  07  |  08  |  09  |  10  |  11  |  12  |  13  |   14  |  15  |  16  |  
                                                          //0xd3                                                
{   65  ,  66  ,   1  ,   2  ,   3  ,   4  ,   5  ,  6   , 0xdd ,   7  ,   0  ,   0  ,   0   ,   0  ,   0  ,   0  },        // Karte Nr. 01  
{   65  ,  66  ,   7  ,   2  ,   3  ,   4  ,   5  ,  6   ,   1  , 0xd8 ,   0  ,   0  ,   0   ,   0  ,   0  ,   0  },        // Karte Nr. 02
{   65  ,  66  ,   1  ,   8  ,   9  ,  10  ,  11  ,  12  , 0xd1 ,   0  ,   0  ,   0  ,   0   ,   0  ,   0  ,   0  },        // Karte Nr. 03
{   65  ,  66  ,  13  ,  14  ,  15  ,  16  ,   9  ,  13  ,   14 ,   0  ,   0  ,   0  ,   0   ,   0  ,   0  ,   0  },        // Karte Nr. 04
{   65  ,  66  ,   1  ,   7  ,   9  ,  17  ,  12  ,  18  ,   19 ,  17  ,  18  ,   0  ,   0   ,   0  ,   0  ,   0  },        // Karte Nr. 05
{   65  ,  66  ,   1  ,  12  ,   9  ,  20  ,   1  ,  20  ,   0  ,   0  ,   0  ,   0  ,   0   ,   0  ,   0  ,   0  },        // Karte Nr. 06
{   65  ,  66  ,   1  ,  21  ,   7  ,  22  ,  21  ,   7  ,   8  ,  23  , 0xfc ,   7  ,  23   ,   0  ,   0  ,   0  },        // Karte Nr. 07
{   65  ,  66  ,   1  ,  24  ,  20  ,  25  ,  22  ,  17  ,  23  ,  26  ,   5  ,  27  ,  21   ,  10  ,  25  ,   0  },        // Karte Nr. 08    
{   65  ,  66  ,  25  ,  20  ,  21  ,  17  ,  28  ,  29  ,  30  ,   0  ,   0  ,   0  ,   0   ,   0  ,   0  ,   0  },        // Karte Nr. 09 
{   31  ,  32  ,  33  ,  34  ,  35  , 0xc8 ,   0  , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x0e0 , 0x00 , 0x00 ,   0  },        // Karte Nr. 10
{   64  ,  36  ,  37  ,  38  ,  39  , 0xbc ,   0  ,   0  ,  69  ,  70  ,  71  ,  72  ,  73   ,  74  ,  75  ,   0  },        // Karte Nr. 11
{   64  ,  40  ,  41  ,  42  ,  43  ,  44  ,  45  ,  46  ,  47  ,  48  ,  49  ,  50  ,  51   , 0xf4 ,   0  ,   0  },        // Karte Nr. 12 
{   64  ,  52  ,  53  ,  54  ,  55  ,  56  ,  57  ,  58  ,  59  ,  60  ,  61  ,  62  ,  63   , 0xfd , 0x00 , 0x00 },        // Karte Nr. 13  
{   64  ,  39  ,  46  ,  36  ,  48  ,  55  ,  61  ,  62  ,  33  ,  57  ,  38  ,  63  , 0x50  , 0xff , 0x00 , 0x00 },        // Karte Nr. 14
{  0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 15
{  0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 16
{    0  ,  33  ,  34  ,  35  ,  36  ,  37  ,  38  ,  39  ,  40  ,  41  ,  42  ,  43  ,  44   ,  45  , 0x00 , 0x00 },        // Karte Nr. 17
{    0  ,  48  ,  49  ,  50  ,  51  ,  53  ,  54  ,  55  ,  56  , 0xef , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 18
{    0  ,  69  ,  70  ,  71  ,  58  , 0xbf , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 19
{    0  ,   7  ,  21  ,  32  ,  42  ,  53  ,  60  , 0xef , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 20
{    0  ,  47  ,  48  ,  55  ,  57  ,  40  ,  55  , 0xef , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 21                
{    0  ,  65  ,  18  ,  49  ,  52  , 0xaa , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 22
{    0  ,   8  ,  32  ,  50  ,  54  , 0xbf , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 23
{    0  ,  57  ,  58  ,  15  ,  51  ,  56  ,  59  , 0xef , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 24
{  0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 25
{  0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 26
{  0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 27
{  0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 },        // Karte Nr. 28
{  0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00  , 0x00 , 0x00 , 0x00 }     // Karte Nr. 29      

};

在其他线程中,我只看到缺少分号,但我认为我不需要任何分号。

我在 Atmega 8535 上使用 AVRStudio 4、AVR-GCC 4.3.3 进行编程。

【问题讨论】:

  • 我猜你做了#include <stdint.h> ...否则真正的错误可能在第14行之前(很长)...寻找丢失的,;},也寻找丢失的#endif
  • 我在主 c 模块中做了 #include 。此代码短语来自另一个 c 模块,我在此处复制的行是该模块中出现错误的第一行。我是 Atmel 编程和 AVR 工作室的新手。所以我会听取你的建议并证明代码。
  • 其他问题:为什么在标题中写“ProgDB”而错误消息指向“PatKarten”?这是否重要/相关?
  • 您必须在每个使用uint8_t 的模块中包含<stdint.h>。代码似乎在uint8_t 之后出现了问题,所以这可能是您的问题。但是正如@MikeD 所说,错误可能是您在问题中未显示的其他问题。编译器试图尽可能多地考虑语法的多种可能性,有时它会在放弃之前走得很远。
  • 在我 #include <avr/pgmspace.h> 在这个 c 文件中之后,错误消失了。但是现在我遇到了其他一些错误。我不知道先行者在这里做了什么-.-

标签: avr atmega avr-gcc


【解决方案1】:

如果您的文件扩展名是 xxx.c,请尝试将其重命名为 xxx.cpp

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多