【问题标题】:Compiler error probably assiociated with typedef编译器错误可能与 typedef 相关
【发布时间】:2014-12-23 05:42:00
【问题描述】:

由于某种原因,我的以下程序无法编译,我无法真正找出原因。我把方法放在 cmets 之间,所以错误不在那里我猜它可能与 typedef 有关。

#include <stdio.h>
#include <stdlib.h>
typedef unsigned char uchar;
typedef unsigned int uint;

uchar register(uint);

int main() {
uint data =  819;
/*
printf("%c", register(data));
*/  
}
uchar register(uint data) {
/*
    uchar reg = 0;
    while(data != 0) {
    if(reg&0x80 == 1) {
        reg=reg<<1;
        reg += data&0x1;
        data = data>>0;
        reg = reg ^ 81;
    }
    else {
        reg<<1;
        reg += data&0x1;
        data = data>>0; 
    }
}
return reg;
*/
}

错误:

[Note] previous declaration of 'uint' was here
[Error] expected ')' before 'data'
[Error] expected expression before 'register'

【问题讨论】:

  • register是C语言中的关键字,不能调用函数register

标签: c char int typedef unsigned


【解决方案1】:
after all the coding errors were corrected, it compiled with no errors.
note that no changes were made to the typedef statements.

#include <stdio.h>
#include <stdlib.h>
typedef unsigned char uchar;
typedef unsigned int uint;

uchar Myregister(uint);

int main()
{
    uint data =  819;
    printf("%c", Myregister(data));
    return(0);
}

uchar Myregister(uint data)
{
    uchar reg = 0;
    while(data != 0)
    {
        if( (reg&0x80) == 1)
        {
            reg=reg<<1;
            reg += data&0x1;
            data = data>>1;
            reg =  reg ^ 81;
        }
        else
        {
            reg =  reg<<1;
            reg += data&0x1;
            data = data>>1;
        }
    }
    return reg;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多