2014-10-27 28 views
1

由于某种原因,我的后续程序将无法编译,我无法真正找出原因。我把这个方法放在注释之间,所以错误不在那里,我想这可能与typedef有关。编译器错误可能与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' 
+14

'register'在C关键字,你不能调用一个函数'register'。 – 2014-10-27 22:20:14

回答

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; 
}