Значение амперсанда в имени функции VB6?

Я только что получил кучу устаревшего кода VB6 (!), брошенного на меня, и я продолжаю видеть функции, объявленные амперсандом в конце имени, например Private Declare Function ShellExecute& . . ..

Мне не удалось найти ответ на важность этого, и я не смог обнаружить какой-либо шаблон в использовании или подпись функций, которые были названы таким образом.

Кто-нибудь знает, означают ли эти конечные амперсанды что-либо для компилятора или, по крайней мере, если есть какое-то соглашение, которое мне не хватает? До сих пор я пишу это как странный программист, но я хотел бы точно знать, есть ли смысл в этом.

Ответы

Ответ 1

Это означает, что функция возвращает значение Long (т.е. 32-разрядное целое число).

Это эквивалентно

Declare Function ShellExecute(...) As Long

Полный список суффиксов выглядит следующим образом:

Integer %
Long    &
Single  !
Double  #
Currency @
String  $

Ответ 2

Как сказал Филипп Шейр, для типа "Лонг" это тип-идентификатор. Они все еще присутствуют в .Net, см. Ссылку статью VB6

Из второй статьи:

Правила формирования правильного имени переменной VB следующие:

(1) Первым символом должна быть буква от A до Z (в верхнем регистре или могут использоваться строчные буквы). Существенными символами могут быть буквы, цифры или символ подчеркивания (_) (без пробелов или других символов допускается).

(2) Конечным символом может быть "символ объявления типа". Только некоторые из типов переменных могут использовать их, как показано ниже:

Data Type  Type Declaration Character  

String         $  
Integer        %  
Long           &  
Single         !  
Double         #  
Currency       @    

Использование декларации типа символы в VB не поощряются; современный стиль - использовать Предложение "Как" в заявлении о декларации данных.