Каково лучшее соглашение о вызовах в Фортране для программирования на разных языках с C и C ++? - PullRequest
0 голосов
/ 26 мая 2018

Уже несколько лет у меня есть возможность поддерживать и развивать код на Фортране.Я начал с компилятора Compaq df и перешел на Intel ifort несколько лет назад.Поэтому в моих проектах на Fortran все еще используется соглашение о вызовах cvf.Теперь я хочу начать со смешанного языкового программирования с упором на Fortran, C и C ++.Я знаю, что есть много дискуссий и подсказок, доступных в сети, особенно поддерживаемых и отвечаемых Стивом Лайонелом, известным как доктор Фортран, то есть

https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/298583

или самой помощью Intel

https://software.intel.com/en-us/node/678228.

Соглашение о вызовах должно быть определено для компилятора Intel Fortran только для Windows с помощью языковой опции /iface:<keyword>, где <keyword> имеет значения default, cref, cvf, [no]mixed_str_len-arg, stdcall и stdref.Различия между cvf (Compaq Visual Fortran) и default, например: C против STDCALL для механизма вызова, длина символа после аргумента против в конце списка аргументов и количество байтов, которые нужно удалить изстек через @n суффикс для cvf.

К сожалению, я не нашел четкого утверждения о том, какое соглашение о вызовах является лучшим или должно быть предпочтительным для программирования на разных языках между Fortran, C и C ++, пока.
Итак, какое соглашение о вызовах является лучшим и каковы причины вашего предложения?

И последнее, но не менее важное: я хочу обмениваться символами / строками между Fortran, C и C ++, особенно потому, что я хочу использовать библиотеки C ++ для обработки файлов Ini, например,

https://www.codeproject.com/Articles/5401/CIni.

Обмениваемые строки не должны содержать char(0) для обозначения окончания строки.Я хочу использовать CIni в качестве динамической библиотеки для моего программного обеспечения Fortran.С другой стороны, я также хочу представить код Fortran в качестве динамической библиотеки для C ++.

Целевая ОС: Windows
Архитектура: IA-32
IDE: Visual Studio
Компилятор Fortran: Intel Fortran14.0.0063.2010 и выше
Компилятор C и C ++: Microsoft Visual C ++ 2010 и выше

Существуют ли какие-либо аргументы objectif для использования определенного соглашения о вызовах для моей цели?

...