2

嗨,我在下面有一个功能。

void turnRight(enum Direction heading, int x, int y){

if(y<=49 && heading==TORIGHT){
    heading=TODOWN;
    x=x+1;

}
else if(x<=49 && heading==TODOWN){
    heading=TOLEFT;
    y=y-1;
}
else if(x>0 && heading==TOLEFT){
    heading=TOUP;
    x=x-1;
}
else if(y<=49&&heading==TOUP){
    heading=TORIGHT;
    y=y+1;
}

else 
    printf("Can not turn right! Boundary alert!");

}//end function

我在 main 中声明 enum 为:

enum Direction {TODOWN, TOUP, TORIGHT, TOLEFT};
static enum Direction heading;
heading=TORIGHT;

我从 main 调用这个函数

turnRight(heading, x, y);

最重要的是,我将原型添加为:

  void turnRight(enum Direction heading, int x, int y);

但编译器到处吐出以下错误:

error C2065: 'TODOWN' : undeclared identifier
error C2065: 'TOUP' : undeclared identifier
error C2065: 'TOLEFT' : undeclared identifier
error C2065: 'TORIGHT' : undeclared identifier

你能告诉我哪里做错了吗?

4

2 回答 2

4

我在 main 中声明了枚举

您需要enum Direction在一个文件中声明,该文件包含在所有使用 的翻译单元中enum,而不仅仅是在main. 例如,您可以在中定义它Direction.h(不要忘记添加包含保护),然后将其包含在您main的源文件和轮流处理源文件中:

方向.h

#ifndef Direction_H
#define Direction_H

enum Direction {TODOWN, TOUP, TORIGHT, TOLEFT};

#endif

现在使用添加#include "Direction.h"到您的main和其他文件中enum以使您的源代码正确编译。

于 2013-05-14T20:19:45.900 回答
4

您需要在全局范围内(即在任何函数之外)在任何函数之前声明枚举。否则它将仅在您声明它的函数中可见。如果您的函数位于不同的.c文件中,则需要将枚举放入头文件中。

于 2013-05-14T20:19:47.110 回答