我有一个程序在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);
}
Eclipse告诉我:Symbol MSG_ID_COMMAND1 could not be resolved
但该程序在vc2008中没问题。
为什么?
//回答:Seth Carnegie。如果我们使用i = MSG_ID_INVALID_TYPE,那就没关系。
答案 0 :(得分:1)
更改
typedef enum {
MSG_ID_INVALID_TYPE = 0,
#include "s0.h"
到
typedef enum {
MSG_ID_INVALID_TYPE = 0,
#include "s0.h"
某些预处理器忽略了左对齐的令牌。 VS一个人没有,显然是日食。
答案 1 :(得分:0)
您创建的代码段无法编译,因为print
函数不存在且没有包含来定义它