Будучи программистом VB.NET, которому необходимо использовать программу на C ++ с более чем 50 открытыми функциями и файлом .h, который время от времени использует квалификатор const, трудно понять, когда обращаться к переменной с помощью ByRef или ByVal.
Конечно, программа сообщает вам, генерируя ошибку исключения в строке, где вы допустили ошибку, но затем вам нужно угадать, какой из 2-10 параметров является неправильным.
Итак, теперь у меня есть неприятная задача - убедить разработчика в том, что он действительно должен определить свои переменные (в файле .h) таким образом, чтобы позволить автоматизированный метод простого создания всех определений функций VB.NET. Затем они самодовольно скажут: «Прочитайте ... документацию».
Я написал сценарий awk, который анализирует файл .h и создает все команды объявления функций, но без указания того, какие переменные являются R / O против R / W, он выполняет только половину работы.
EDIT:
При поддержке другого пользователя я добавляю следующее:
Вот пример (IMO) плохо сформированной записи .h;
typedef int (EE_STDCALL *Do_SomethingPtr)( int smfID, const char* cursor_name, const char* sql );
Результирующий VB из моего скрипта;
Declare Function Do_Something Lib "SomeOther.DLL" (ByRef smfID As Integer, ByVal cursor_name As String, ByVal sql As String) As Integer
Обратите внимание на пропущенное «const» в первом параметре. Без этого программа (или другой разработчик) не имеет идеи, 1-й параметр должен быть передан «ByVal». При добавлении «const» файл .h самодокументируется, поэтому разработчики, использующие другие языки, могут легко написать рабочий код.