2010-08-23 74 views
1

我正在将Ada83翻译成Ada95文件。当我尝试编译调用单独的文件时,会发生问题。错误是“非法字符”,并指向预处理器的指令:Ada单独文件中的错误

with BAS_PUT;

#if ADA_COMPILER =“GNAT”then

WITH ADA.GNAT_PUT;

#else

WITH ADA_PUT;

#end if;

分开(A_CALL_PUT) 程序....

当同一预处理器指令是在一个文件中,亚行,它不是一个单独的功能不会发生此问题。

有人可以帮我吗?

回答

3

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

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

如果你的编译器确实碰巧带有预处理器,它就是非标准的。如果你喜欢,可以使用它,但是根据定义,创建便携式源文件(这似乎是你试图用它做什么)将是无用的。

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