在 Ada 中,与 C++ 中的 #define 等效的是什么?

3
我是新手使用Ada语言,但在互联网上探索时,我发现没有类似于C ++这个概念的模拟方法。
假设我有 “package_name.data_member”(各种包中的多个变量),我希望将其缩短为更易读的方式,例如下面的格式(不使用“Use”关键字),因为这些变量将在同一文件中多次使用 -
#define A package_name.data_member
#define B package_name.data_member
...

有没有一种方法我可以在Ada中实现上述功能?
2个回答

8
在这种情况下,您需要一个对象重命名声明(ARM 8.5.1):
A : Data_Member_Type renames Package_Name.Data_Member;

如果您使用GNAT,它包括一个名为gnatprep的工具;与cpp最主要的区别是:
- 要替换的符号必须在源文本中标记,例如$foo$不在Ada源字符集中), - 替换只能在单独的定义文件(或例如命令行上的-Dfoo=bar)中定义。

4

#define(或任何预处理)在标准的Ada语言中没有确切的类比(尽管如果需要,可以使用宏预处理器),但对于此用途,重命名声明应该适合:

A:A类型重命名为package_name.data_memberA;

B:B类型重命名为package_name.data_memberB;

这种方法的优点是,与#define相比,在意想不到的地方不会错误地将标记A和B替换为它们的#define。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接