C Warning – comparison between pointer and integer

다음과 같은 코드가 있을때 JAVA의 경우라면 맞는 이야기 같지만 C 스텐다드에서는 경고 문구를 출력합니다. 왜냐하면 어레이가 포인터이기 때문에 포인터와 int를 비교하면 안된다는것인데요.

다음코드를 보면 new_position 은 Array 의 Element입니다.
여기서 NORMAL_TOKEN은 enum 이죠.

BOOLEAN is_valid_move(const gameboard board, const struct move* move,
                struct player* player)
{
        /* store passed variables */
        int new_position;
        int pre_x = (*move).start.x,
        pre_y = (*move).start.y,
        new_x = (*move).end.x,
        new_y = (*move).end.y;

        new_position = board[new_y][new_x];
     
else if(new_position == NORMAL_TOKEN || new_position == KING_TOKEN)
        {
            printf("Error: There is another tokken!\n");
            return FALSE;
        }

위와같은 오류를 수정하려면
같은타입 포인터 와 포인터가 비교대상이 되게합니다.

else if(new_position == *NORMAL_TOKEN || new_position == *KING_TOKEN)
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s