1

我正在将 Ada83 转换为 Ada95 文件。当我尝试编译一个调用单独的文件时,就会出现问题。错误是“非法字符”,指的是预处理器的指令:

与 BAS_PUT;

#if ADA_COMPILER="GNAT" 然后

与 ADA.GNAT_PUT;

#别的

与 ADA_PUT;

#万一;

单独(A_CALL_PUT)过程....

当相同的预处理器指令位于文件 adb 中时,不会发生此问题,它不是一个单独的函数。

有人可以帮助我吗???

4

1 回答 1

3

Ada 没有预处理器,因此#确实是非法字符。

一些编译器(例如:Gnat)确实带有一个,但如果是这样,它是他们自己设计的。如果您愿意,您可以设置您的构建系统以通过外部预处理器(例如:C 预处理器)运行您的 Ada 源文件。我从来没有这样做过,但有人告诉我它非常可行。

如果您的编译器碰巧带有预处理器,则它是非标准的。如果您愿意,可以使用它,但根据定义,它对于创建可移植源文件是没有用的(这似乎是您试图用它做的事情)。

大多数人会认为为不同的环境创建不同的源文件并让构建环境(制定规则?)在它们之间切换是更好的形式。

于 2010-08-23T17:36:56.690 回答