next up previous contents
Next: Межъязыковая связь Up: Способность языка к взаимодействию Previous: Дополнительное состояние   Contents

Константы

Константы MPI имеют одинаковое значение на всех языках, если не определено иначе. Это не относится к постоянным указателям (MPI_INT, MPI_COMM_WORLD, MPI_ERRORS_RETURN, MPI_SUM и т.д.). Эти указатели должны быть преобразованы, как объяснено в Разделе 4.12.4. Константы, которые определяют максимальные длины строк (смотрите Раздел A.2.1), имеют значение на 1 меньше в ФОРТРАН, чем в Си/С++, так как в Си/С++ длина включает нулевой оконечный знак. Таким образом, эти константы представляют количество пространства, которое должно быть распределено, чтобы содержать максимально возможную такую строку, а не максимальное число печатаемых символов, которые строка могла бы содержать.

Совет пользователям: Это определение означает, что в Си/С++ безопасно распределять буфер, чтобы получить строку, используя подобное объявление

char name [MPI_MAX_NAME_STRING];

Также ``адресные'' константы, то есть специальные значения аргументов ссылки, которые не являются указателями, типа MPI_BOTTOM, MPI_IN_PLACE, MPI_STATUS_IGNORE и MPI_STATUSES_IGNORE могут иметь различные значения на различных языках.

Объяснение: Текущий стандарт MPI определяет, что MPI_BOTTOM может использоваться в выражениях инициализации в Си, но не в языке ФОРТРАН. Так как ФОРТРАН обычно не поддерживает вызов по значению, тогда MPI_BOTTOM должна быть в ФОРТРАН именем предопределенной статической переменной, например, переменная в MPI-объявленном блоке COMMON. С другой стороны, в Си естественно брать MPI_BOTTOM = 0 (Предостережение: Определение MPI_BOTTOM = 0 подразумевает, что указатель NULL не может быть отличен от MPI_BOTTOM; может быть, что MPI_BOTTOM = 1 - лучше ...). Требование, чтобы значения ФОРТРАНА и Си были одинаковыми, усложняет процесс инициализации. []



Alex Otwagin 2002-12-10