Существует ли набор общих правил/рекомендаций, которые могут помочь понять, когда следует отдавать предпочтение pragma Pure
, pragma Preelaborate
или еще что-то еще? Правила и определения, представленные в стандарте (Ada 2012), немного тяжелые, и я был бы благодарен за чтение чего-то более понятного и ориентированного на средний случай.
Если бы я хотел быть основательным, не до конца поняв "почему", могу ли я просто попробовать:
- Отметьте спецификацию пакета
pragma Pure;
- Если он не компилируется, попробуйте
pragma Preelaborate;
- Если это не удается, то я сделал что-то сложное и либо должен быть
pragma Elaborate
единиц на основеwith
-by-with
, либо переосмыслить макет пакета.
Хотя это может работать (не так ли?), потому что рекомендуется по возможности отмечать пакет как чистый (аналогично Preelaborate), однако он кажется немного поврежденным мозгом, и я бы предпочел лучше понять этот процесс.