Значение амперсанда в названии функции VB6? - PullRequest
15 голосов
/ 21 февраля 2012

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

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

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

Ответы [ 2 ]

20 голосов
/ 21 февраля 2012

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

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

Declare Function ShellExecute(...) As Long

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

Integer %
Long    &
Single  !
Double  #
Currency @
String  $
12 голосов
/ 21 февраля 2012

Как сказал Филип Шард, это тип идентификатора для Long. Они все еще присутствуют в .Net, смотрите эту ссылку MSDN и эту статью VB6

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

Правила формирования правильного имени переменной VB:

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

(2) Последний символ может быть «символом объявления типа». Только некоторые типы переменных могут использовать их, как показано ниже:

Data Type  Type Declaration Character  

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

Использование объявления типа символы в VB не приветствуются; современный стиль заключается в использовании Предложение "As" в заявлении на объявление данных.

...