【问题标题】:Error in getting this piece of C run in dev c++ - "Syntax error before * token"让这段 C 在 dev c++ 中运行时出错 - “* token 之前的语法错误”
【发布时间】:2014-06-28 23:45:32
【问题描述】:

编辑:该程序包含标头,并且与 gcc 和 win7 不兼容。我想我必须使用 dosbox 和 turbo c 来运行程序...

整个程序在这里:http://blackwhite.8866.org/bhh/asc.c

下面是得到错误信息的相关代码:

main(){
    char far *p = (char far *),0xA0000000,far *py, far *px;
    /* some other codes */
}

我不知道为什么会出现这个错误,因为代码是教授作为家庭作业给出的(我们必须在 8086 汇编中创建相同的程序)。

我猜是 Dev c++ 的问题,但我也不知道...

提前谢谢你!

【问题讨论】:

  • 不应该是char far, *p, ...;吗?
  • 对不起,错字!现在改了:)
  • 谢谢!让我现在试试...
  • (char far *),0xA0000000 中删除逗号。另外我认为你应该从far *pyfar *px中删除far
  • 刚刚尝试过,但这不起作用。错误变成“far”之前的语法错误:(

标签: c pointers syntax-error dev-c++


【解决方案1】:
int main(){
   char far *p = (void far *)0xA0000000;  // Initialize a far * to point to address.
   void far *py;                          // type of far pointer required. (void, char, int, etc.)
   void far *px;                          // type of far pointer required. (void, char, int, etc.
   /* some other codes */

   return(0);
}

【讨论】:

  • @alk,我的懒惰。 void 指针类型可用于初始化任何其他指针类型。这是一种表达方式:“我真的不知道地址 0xA0000000 上的内容。
  • @Mahonri MoriancumerThat doesn't work.... 我发现代码包含与 gcc 不兼容的标头。我想知道这是否也可能是问题?
  • @Sue,如果你添加这一行,(可能是你的'#include'行):“#define far”它应该可以解决问题。 'far' 关键字不是 C 标准的一部分;但是几个编译器引入了它(主要是为了支持 16 位 DOS 应用程序)。这个想法是为了帮助编译器知道它是应该实现一个 16 位指针(近)还是一个 32 位指针(远)。您可能会发现您的 gcc 环境默认使用 32 位指针(远)。因此,只需将 'far' 定义为 'do nothing',您就不必遍历代码并从任何地方删除 'far' 关键字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多