免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 26261 | 回复: 7
打印 上一主题 下一主题

excess elements in scalar initializer 什么原因 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-19 17:18 |只看该作者 |倒序浏览
我在LINUX下用GCC编译一个文件,
在文件中定义了这个变量 unsigned long const crc_32_tab[256]={
                0x00000000,0x77073096,0xee0e612c,0x990951ba,0x076dc419,0x706af48f,0xe963a535,0x9e6495a3
};
为什么编译的时候有excess elements in scalar initializer 警告啊。
本来刚从NUCLUES转到LINUX下,觉得很多在ADS编译器下没错的,可是到了GCC编译器下就有问题。请教大家了

论坛徽章:
0
2 [报告]
发表于 2007-04-19 17:34 |只看该作者
可能是你不小心把 [256] 给去掉了,从而使 crc_32_tab 从集合类型(数组)变为了数值类型(scalar),而数值类型的初始化只能接受一个值,所以就出现了多余的元素(excess elements)。

论坛徽章:
0
3 [报告]
发表于 2007-04-19 21:48 |只看该作者
我没有把[256]去掉啊,我在VC里面一点问题页没有

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2007-04-19 22:01 |只看该作者
完整程序,平台,编译器版本?

论坛徽章:
0
5 [报告]
发表于 2007-04-20 09:14 |只看该作者
C文件:
#include        <stdio.h>
#include     <stdlib.h>
#include     <unistd.h>
#include     <sys/types.h>
#include     <sys/stat.h>
#include     <termios.h>
#include            <time.h>
#include "DataHead.h"
#include "GeneralInterface.h"

//   CRC 校验和数组

static  unsigned long  crc_32_tab[256] = {
        0x00000000,
        0x77073096,
        0xee0e612c,
        0x990951ba,
        0x076dc419,
        0x706af48f,
        0xe963a535,
        0x9e6495a3,
        0x0edb8832,
        0x79dcb8a4,
        0xe0d5e91e,
        0x97d2d988,
        0x09b64c2b,
        0x7eb17cbd,
        0xe7b82d07,
        0x90bf1d91,
        0x1db71064,
        0x6ab020f2,
        0xf3b97148,
        0x84be41de,
        0x1adad47d,
        0x6ddde4eb,
        0xf4d4b551,
        0x83d385c7,
        0x136c9856,
        0x646ba8c0,
        0xfd62f97a,
        0x8a65c9ec,
        0x14015c4f,
        0x63066cd9,
        0xfa0f3d63,
        0x8d080df5,
        0x3b6e20c8,
        0x4c69105e,
        0xd56041e4,
        0xa2677172,
        0x3c03e4d1,
        0x4b04d447,
        0xd20d85fd,
        0xa50ab56b,
        0x35b5a8fa,
        0x42b2986c,
        0xdbbbc9d6,
        0xacbcf940,
        0x32d86ce3,
        0x45df5c75,
        0xdcd60dcf,
        0xabd13d59,
        0x26d930ac,
        0x51de003a,
        0xc8d75180,
        0xbfd06116,
        0x21b4f4b5,
        0x56b3c423,
        0xcfba9599,
        0xb8bda50f,
        0x2802b89e,
        0x5f058808,
        0xc60cd9b2,
        0xb10be924,
        0x2f6f7c87,
        0x58684c11,
        0xc1611dab,
        0xb6662d3d,
        0x76dc4190,
        0x01db7106,
        0x98d220bc,
        0xefd5102a,
        0x71b18589,
        0x06b6b51f,
        0x9fbfe4a5,
        0xe8b8d433,
        0x7807c9a2,
        0x0f00f934,
        0x9609a88e,
        0xe10e9818,
        0x7f6a0dbb,
        0x086d3d2d,
        0x91646c97,
        0xe6635c01,
        0x6b6b51f4,
        0x1c6c6162,
        0x856530d8,
        0xf262004e,
        0x6c0695ed,
        0x1b01a57b,
        0x8208f4c1,
        0xf50fc457,
        0x65b0d9c6,
        0x12b7e950,
        0x8bbeb8ea,
        0xfcb9887c,
        0x62dd1ddf,
        0x15da2d49,
        0x8cd37cf3,
        0xfbd44c65,
        0x4db26158,
        0x3ab551ce,
        0xa3bc0074,
        0xd4bb30e2,
        0x4adfa541,
        0x3dd895d7,
        0xa4d1c46d,
        0xd3d6f4fb,
        0x4369e96a,
        0x346ed9fc,
        0xad678846,
        0xda60b8d0,
        0x44042d73,
        0x33031de5,
        0xaa0a4c5f,
        0xdd0d7cc9,
        0x5005713c,
        0x270241aa,
        0xbe0b1010,
        0xc90c2086,
        0x5768b525,
        0x206f85b3,
        0xb966d409,
        0xce61e49f,
        0x5edef90e,
        0x29d9c998,
        0xb0d09822,
        0xc7d7a8b4,
        0x59b33d17,
        0x2eb40d81,
        0xb7bd5c3b,
        0xc0ba6cad,
        0xedb88320,
        0x9abfb3b6,
        0x03b6e20c,
        0x74b1d29a,
        0xead54739,
        0x9dd277af,
        0x04db2615,
        0x73dc1683,
        0xe3630b12,
        0x94643b84,
        0x0d6d6a3e,
        0x7a6a5aa8,
        0xe40ecf0b,
        0x9309ff9d,
        0x0a00ae27,
        0x7d079eb1,
        0xf00f9344,
        0x8708a3d2,
        0x1e01f268,
        0x6906c2fe,
        0xf762575d,
        0x806567cb,
        0x196c3671,
        0x6e6b06e7,
        0xfed41b76,
        0x89d32be0,
        0x10da7a5a,
        0x67dd4acc,
        0xf9b9df6f,
        0x8ebeeff9,
        0x17b7be43,
        0x60b08ed5,
        0xd6d6a3e8,
        0xa1d1937e,
        0x38d8c2c4,
        0x4fdff252,
        0xd1bb67f1,
        0xa6bc5767,
        0x3fb506dd,
        0x48b2364b,
        0xd80d2bda,
        0xaf0a1b4c,
        0x36034af6,
        0x41047a60,
        0xdf60efc3,
        0xa867df55,
        0x316e8eef,
        0x4669be79,
        0xcb61b38c,
        0xbc66831a,
        0x256fd2a0,
        0x5268e236,
        0xcc0c7795,
        0xbb0b4703,
        0x220216b9,
        0x5505262f,
        0xc5ba3bbe,
        0xb2bd0b28,
        0x2bb45a92,
        0x5cb36a04,
        0xc2d7ffa7,
        0xb5d0cf31,
        0x2cd99e8b,
        0x5bdeae1d,
        0x9b64c2b0,
        0xec63f226,
        0x756aa39c,
        0x026d930a,
        0x9c0906a9,
        0xeb0e363f,
        0x72076785,
        0x05005713,
        0x95bf4a82,
        0xe2b87a14,
        0x7bb12bae,
        0x0cb61b38,
        0x92d28e9b,
        0xe5d5be0d,
        0x7cdcefb7,
        0x0bdbdf21,
        0x86d3d2d4,
        0xf1d4e242,
        0x68ddb3f8,
        0x1fda836e,
        0x81be16cd,
        0xf6b9265b,
        0x6fb077e1,
        0x18b74777,
        0x88085ae6,
        0xff0f6a70,
        0x66063bca,
        0x11010b5c,
        0x8f659eff,
        0xf862ae69,
        0x616bffd3,
        0x166ccf45,
        0xa00ae278,
        0xd70dd2ee,
        0x4e048354,
        0x3903b3c2,
        0xa7672661,
        0xd06016f7,
        0x4969474d,
        0x3e6e77db,
        0xaed16a4a,
        0xd9d65adc,
        0x40df0b66,
        0x37d83bf0,
        0xa9bcae53,
        0xdebb9ec5,
        0x47b2cf7f,
        0x30b5ffe9,
        0xbdbdf21c,
        0xcabac28a,
        0x53b39330,
        0x24b4a3a6,
        0xbad03605,
        0xcdd70693,
        0x54de5729,
        0x23d967bf,
        0xb3667a2e,
        0xc4614ab8,
        0x5d681b02,
        0x2a6f2b94,
        0xb40bbe37,
        0xc30c8ea1,
        0x5a05df1b,
        0x2d02ef8d,
};


//static  unsigned char  crctab[2] = {1,2};
/****************************************************************
* 函数名:  GenerateCRC32

* 功  能: 计算校验和

* 入口参数:DataBuf: 数据缓冲区指针
            len    : 数据长度

* 返回值:  返回得到校验和

* 备  注:
***************************************************************/

unsigned long generate_crc32(char *DataBuf,unsigned long  len)
{
        unsigned long oldcrc32;
        unsigned long crc32;
        unsigned long oldcrc;
        unsigned  int charcnt;
        unsigned char c,t;

        oldcrc32 = 0x00000000; //初值为0

        charcnt=0;

        while (len--)
        {
                t        = (oldcrc32 >> 24) & 0xFF; //要移出的字节的值
                //oldcrc   = crc_32_tab[t];           //根据移出的字节的值查表
                c        = DataBuf[charcnt];        //新移进来的字节值
                oldcrc32 = (oldcrc32 << | c;     //将新移进来的字节值添在寄存器末字节中
                oldcrc32 = oldcrc32^oldcrc;         //将寄存器与查出的值进行xor运算
                charcnt++;
        }
        crc32=oldcrc32;
        return crc32;
}
double now()
{
    struct timeval tv;
    double s;
    gettimeofday(&tv, 0);
    s = (tv.tv_sec);
    s += (1e-6 * tv.tv_usec);
    return s;
}

void wait(double sec)
{
    double start_time = now();

    const double SLEEP_MIN_TIME = 0.005;
    struct timespec sleep_;
    double sleep_time ;
    int seconds;
    //当等待时间>SLEEP_MIN_TIME时,调用nanosleep() API,避免过多占用内存。
    //nanosleep() API的精度约为200us。

    if(sec > SLEEP_MIN_TIME)
    {
        sleep_time = sec-SLEEP_MIN_TIME;
        seconds = (int)(sleep_time);
        sleep_.tv_sec = seconds;
        sleep_.tv_nsec = (int)((sleep_time-seconds)*1e9);
        nanosleep(&sleep_,NULL);
    }

    //开始循环取时,判断时间是否到了。
    for(;
    {
        if((now() - start_time) > sec) break;
    }

void delay(unsigned int nMs)
{
        double dbsec;
        dbsec = nMs / 1000;
        wait(dbsec);
}

void get_time(struct _DATETIME  *pdatetime)
{

        time_t timep;
        struct tm *ptm;

        time(&timep);
        ptm = gmtime(&timep);

        sprintf(pdatetime->CurrentDate,"%d%02d%02d",(1900+ptm->tm_year),(ptm->tm_mon+1),ptm->tm_mday);

        sprintf(pdatetime->CurrentTime,"%d:%d:%d",ptm->tm_hour,ptm->tm_min,ptm->tm_sec);

}
H文件:
#ifndef _DATAHEAD_H_
#define        _DATAHEAD_H_
typedef struct _DATETIME
{
        char CurrentDate[8];
        char CurrentTime[8];
}DATETIME,*PDATETIME;
#endif
LINUX平台下,GCC版本3.2.2

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2007-04-20 10:05 |只看该作者
估计是编译器的bug,
可以考虑更新一下编译器版本。

论坛徽章:
0
7 [报告]
发表于 2007-04-20 10:59 |只看该作者
原帖由 sqq001 于 2007-4-19 17:18 发表
我在LINUX下用GCC编译一个文件,
在文件中定义了这个变量 unsigned long const crc_32_tab[256]={
                0x00000000,0x77073096,0xee0e612c,0x990951ba,0x076dc419,0x706af48f,0xe963a535,0x9e6495a3 ...


应该是代码其它地方的问题,光这个数组是不会出错的

论坛徽章:
0
8 [报告]
发表于 2014-09-23 18:40 |只看该作者

menu.c:1184: warning: braces around scalar initializer
menu.c:1184: warning: (near initialization for 'list0[120]')
menu.c:1184: warning: excess elements in scalar initializer
menu.c:1184: warning: (near initialization for 'list0[120]')
===============
今天编译程序的时候也 出现这样的错误, 最后发现是 .h文件中 乱入 几个字符,改正后编译OK!

BUG贴出来 给 大家一个 参考。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP