【发布时间】:2012-08-09 18:20:01
【问题描述】:
我必须在PC上使用外国C代码(最初运行在嵌入式硬件上),我不允许修改。
一个 .h 文件中的一些变量声明如下所示:
extern int variableA;
extern variableB;
extern variableC+0;
- 变量A 的声明很明确。
- variableB 的声明通过编译器,类型假定为 int。
- variableC 声明失败。
问题: 变量C的声明使用什么样的语法?如何让编译器接受它(不允许修改代码)?这甚至是有效的 C 语法吗?
项目使用的编译器是VS2008内部编译器。
更新:
我追溯了包含,并且没有#define 更改该语法。仅供参考,该代码来自机载硬件,并且可以正确编译(使用硬件的编译器)。该变量在我可用的代码部分中用作常规变量:
variableC+0 = otherVar;
感谢您的回复,这似乎是无效的标准 C 代码,仅适用于该特定编译器。
【问题讨论】:
-
这看起来根本不像一个有效的语法。至少不是 ANSI C
-
您还有什么其他信息?后面的代码中如何使用 variableC?它可能是一个宏,以便
extern variableC+0;扩展为extern a=3+0;之类的东西吗?你有证据证明这段代码曾经编译成功吗?是否因为预处理器条件而未编译的代码? -
声明
int a + 0;也没有意义,而且看起来是类似的构造。 -
次要的挑剔:这些是声明,而不是定义
-
原始源代码是用非 ASCII 字符编写的,编码是否损坏?代码是否在编译之前进行了额外处理?你确定这不是“工作保障”吗?您确定源代码没有因硬件/软件故障而损坏吗?
标签: c syntax definition