C程序 - 小端实例 - 错误

时间:2013-11-15 12:42:17

标签: c eclipse-cdt

我正在研究一本书的例子 - CSPP - O'Hallaron&科比

在编译时我得到一个错误 -

gcc -Wall -W -Werror main.c -o endianc

还尝试使用cc main.c - 同样的错误

aaron@aaron-Box:~/xxx/cpp/endian$ cc main.c
main.c: In function ‘main’:
main.c:6:24: error: storage class specified for parameter ‘byte_pointer’
 typedef unsigned char *byte_pointer;
                    ^
 main.c:8:17: error: expected declaration specifiers or ‘...’ before ‘byte_pointer’
 void show_bytes(byte_pointer start, int len) 
             ^
main.c:17:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
 {
 ^
main.c:22:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
 {
 ^
 main.c:27:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
 {
 ^
 main.c:6:24: error: declaration for parameter ‘byte_pointer’ but no such parameter
 typedef unsigned char *byte_pointer;
                    ^
 main.c:29:1: error: expected ‘{’ at end of input
 }

实际节目 -

#include <stdio.h>
#include<stdlib.h>

int main(void)
{
typedef unsigned char *byte_pointer;

void show_bytes(byte_pointer start, int len) 
{
    int i;
    for (i = 0; i < len; i++)
    printf(" %.2x", start[i]);
    printf("\n");
}

void show_int(int x) 
{
    show_bytes((byte_pointer) &x, sizeof(int));
}

void show_float(float x) 
{
    show_bytes((byte_pointer) &x, sizeof(float));
}

void show_pointer(void *x) 
{
    show_bytes((byte_pointer) &x, sizeof(void *));
}
return 0;
}

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

;之后您缺少分号void main()。 (此外,您似乎不太可能首先需要该行,但您需要main函数的实际实现,并且返回类型为int,而不是{{1} }。)

答案 1 :(得分:0)

在main()处缺少分号,这就是它抛出错误的原因。

答案 2 :(得分:0)

发生错误是因为“void main()”后面紧跟着typedef。缺少主要功能的整个主体。回去看看书,看看你遗漏了什么。

答案 3 :(得分:0)

好的,我现在已经修好了

int main(void);替换为int main()通知NO simicolon - &gt;我在本教程中使用它 - &gt; URL

并将return 0;替换为return (0);,注意带括号的括号。

我还注意到“c Programming Language”中的例子D.Richie - &gt;使用main方法的示例不包含;

1)我可以问一下代码中的这些变化是什么吗?

2)现在我无法运行程序./endianc - &gt;它没有回应

我也试过

xx@aaron-Box:~/xxx/cpp/endian$ cc main.c
xx@aaron-Box:~/xxx/cpp/endian$ a out
a: command not found

(我是否需要为此问题打开单独的线程?)

感谢所有人的帮助。