【问题标题】:far pointer declaration in Visual StudioVisual Studio 中的远指针声明
【发布时间】:2019-04-09 01:14:58
【问题描述】:

我有一个这样的远指针声明:

char far *p;

但是visual studio 2008给了我

error C2146: missing ';' before identifier 'p'

感谢任何帮助。

【问题讨论】:

  • 您为哪个平台编译? far 指针在过去被使用,但在现代平台上不相关。见stackoverflow.com/questions/1749904/…
  • 我正在为 Win 7 编译。感谢@cdarke 提供链接;我明白现在不需要远或近指针;我说的对吗?
  • 如果你跨界可能需要——编译为 16 位平台,但对于 Win 7,没有。你从哪里得到你需要一个远指针的想法?可能是您使用的旧资源无法再使用。
  • 通常 Windows 头文件将 far 定义为扩展为空 (#define far)。您是否在源代码中包含windows.h?如果您不能(或不想)包含windows.h,您可以在文件或任何标题中添加#define far
  • 是的,我正在编译旧的 src 代码;它的工作原理是几乎没有定义。请换一个答案,以便我接受。

标签: c visual-studio pointers


【解决方案1】:

far 是 16 位 Microsoft 编译器(可能还有其他旧编译器)中的关键字。如今,在 32/64 位世界中,此关键字已过时且无用。

通常,Windows 头文件将 far 定义为扩展为空。

如果您包含windows.h,您的代码应该可以编译。

如果您不能或不想包含windows.h,您可以在您的文件或项目的任何适当头文件中添加#define far

或者最好从源文件中手动删除far

【讨论】:

    【解决方案2】:

    这不是标准的 C 语法。 这是

    它们不是必需的,因此现代编译器不支持。

    此指针的实现可能因编译器而异。
    标准的 Microsoft 编译器不应该支持这个特性,并且应该给你一个错误。可能有针对特定硬件的特定编译器,它扩展了语言以提供此功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多