170 похожих чатов

Зачем в msvc в стандартной библиотеке все начинается с '_'? template

<class _Ty>
class _Ref_count : public _Ref_count_base { // handle reference counting for pointer without deleter
public:
explicit _Ref_count(_Ty* _Px) : _Ref_count_base(), _Ptr(_Px) {}

private:
virtual void _Destroy() noexcept override { // destroy managed resource
delete _Ptr;
}

virtual void _Delete_this() noexcept override { // destroy self
delete this;
}

_Ty* _Ptr;
};

13 ответов

6 просмотров

Если назвать без _, пользователь сможет написать, например, #define Destroy 42 перед инклудом библиотеки и всё сломается

Тамар-Кусь Автор вопроса

кто в здравом уме это будет делать?

Тамар-Кусь Автор вопроса

int_type у меня #define int_type int и все

Тамар Кусь
кто в здравом уме это будет делать?

ну например Qtшним #define slot можно сломать python

Тамар-Кусь Автор вопроса
Макс Воробьев
ну например Qtшним #define slot можно сломать pyth...

Мне однажды пришлось переименовывать метод emit на invoke в библиотеке интеграции с qt для.

Тамар Кусь
int_type у меня #define int_type int и все

У библиотеки есть интерфейсная часть (предоставление которой заявляется Стандартом и использовать которую в качестве макроимен он же запрещает), а также произвольные имена имплементации, под которые Стандартом отведены идентификаторы, начинающиеся с андерскора, за которым следует прописная буква, либо содержащие последовательность из андерскоров (либо начинающиеся с андерскора - в глобальной области видимости). Edit: На всякий случай, правила для имен пользовательских литеральных суффиксов содержат исключение.

Ramil Rizvanov
Что за магия числа 42?

Ответ на главный вопрос

Ramil Rizvanov
Что за магия числа 42?

Это особенное число. Почему оно особенное хотите вы спросить? Особенным могло бы быть любое другое, но тогда бы вы спрашивали о нём. * Вольная цитата Артура Кларкс.

Sergey Anisimov
У библиотеки есть интерфейсная часть (предоставлен...

юзер дефайнед литералы _<name> это довольно неудобно

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Any electron dev here?
Sayanth Tezro
12
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
так это может кто что знает или использует что-то как макбук только не макбук? на 13…14 дюймов
Michael
9
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
did you mean this? if yes no you don't need it. just need a ui for handle process with ui and some terminal code. you don't want to re create adb your self you just want add u...
Mr Thieves
7
Карта сайта