В VBA, тип данных Long и Object - это 4 байта, который является размером адреса памяти. Означает ли это, что, технически, тип данных объекта не делает ничего, что Long не мог бы сделать? Если да, то можно ли сказать, что тип данных объекта существует просто, чтобы облегчить программисту различать назначение переменной?Разница между длинным и объектным типом данных в VBA
Этот вопрос возник, поскольку я рассматривал заявления функции API Win32. Они часто объявляются как Длинные, и, если я не ошибаюсь, их возвращаемое значение является просто адресом памяти. Похоже, что определять эти функции, поскольку объект был бы более уместным.
Неужели я полностью отключен? Заранее спасибо.
«Объект» скрывает большую сложность, его базовый указатель на 4 байта * должен указывать на COM-объекты vTable/IDispatch - вы не можете назначить ему адрес чего-либо еще и ожидать, что он будет работать. –
Я не знал, что это может указывать только на объекты COM. Итак, что это говорит о функциях API Win32? Если они возвращают COM-указатели, то почему они не объявлены как Object, а не Long? – cadsharp
Большая часть Win32, которая использует COM, реализована с использованием COM-интерфейсов напрямую, а не как экспортируемых функций, я полагаю теоретически, что если вы нашли тот, который действительно возвращал такие (например, последний аргумент COM-кода CoCreateInstance), вы могли бы передать аргумент 'as Object' –