我正在将Ada83翻译为Ada95文件。当我尝试编译调用单独的文件时会发生问题。错误是“非法字符”,并指向预处理器的指令:
使用BAS_PUT;
#if ADA_COMPILER =“GNAT”然后WITH ADA.GNAT_PUT;
#其他WITH ADA_PUT;
#万一;分离(A_CALL_PUT) 程序......
当文件adb中的相同预处理程序指令不是单独的函数时,不会发生此问题。
有人可以帮助我???
答案 0 :(得分:3)
Ada没有预处理器,因此#
确实是非法角色。
有些编译器(例如:Gnat)确实带有一个编译器,但如果是这样的话,这是他们自己设计的一个。如果您愿意,可以设置构建系统以通过外部预处理器(例如:C预处理器)运行Ada源文件。我从来没有这样做过,但我被告知它非常可行。
如果您的编译器确实带有预处理器,那么它是非标准的。如果您愿意,可以使用它,但根据定义,它对于创建可移植源文件(这似乎是您尝试使用它)似乎毫无用处。
大多数人会认为更好的形式是为不同的环境创建不同的源文件,并让构建环境(make rules?)在它们之间切换。