1

我有一个程序在 eclipse C/c++ cdt 中告诉我“无法解析符号 xxxx”。

示例文件如下:

头文件s.h::

#ifndef S_H_
#define S_H_

typedef enum {
    MSG_ID_INVALID_TYPE = 0,
    #include "s0.h"
} msg_type;

#endif /* S_H_ */

上述文件包括如下所示的头文件:

头文件s0.h

MSG_ID_COMMAND1,
MSG_ID_COOMAND2,

主文件test.c

/*
 * test.c
 *
 *  Created on: 2012-5-18
 *      Author: js
 */
#include "s.h"

int i = MSG_ID_COMMAND1;

main()
{
    print ("%d",i);
}

日食告诉我:Symbol MSG_ID_COMMAND1 could not be resolved

但是程序在vc2008下是可以的。

为什么?

// 答案:赛斯·卡内基。如果我们使用 i = MSG_ID_INVALID_TYPE,就可以了。

4

2 回答 2

1

改变

typedef enum {
    MSG_ID_INVALID_TYPE = 0,
    #include "s0.h"

typedef enum {
    MSG_ID_INVALID_TYPE = 0,
#include "s0.h"

一些预处理器会忽略不左对齐的标记。VS 没有,显然 Eclipse 有。

于 2012-05-18T02:39:23.003 回答
0

您创建的代码段无法编译,因为print函数不存在并且没有包含来定义它

于 2012-05-18T02:38:02.110 回答