Решил глянуть код С++ -ного pow()
. Как это работает?
_Check_return_ inline double pow(_In_ double _Xx, _In_ int _Yx) noexcept
{
if (_Yx == 2)
return (_Xx * _Xx);
return (_CSTD pow(_Xx, static_cast<double>(_Yx)));
}
А конкретно эта строка:
(_CSTD pow(_Xx, static_cast<double>(_Yx)))
static_cast<double>(_Yx)
- это приведение к типу double
А что такое _CSTD
?
И что такое _In_
?
Код CSTD:
#ifdef __cplusplus
#define _CSTD ::
#define _EXTERN_C extern "C" {
#define _END_EXTERN_C }
#else /* ^^^ __cplusplus ^^^ // vvv !__cplusplus vvv */
#define _CSTD
#define _EXTERN_C
#define _END_EXTERN_C
#endif /* __cplusplus */
_In_
- это аннотация SAL
_CSTD
- это макрос раскрывающийся в обращение к глобальному пространству имен ::
pow
- это вызов реализации pow
из С
Какой-то макрос, зависящий от реализации. Смысл в том, что если на вход даётся значение интегрального типа, то вызываем перегрузку для типа double
_In_, скорее всего, макрос или алиас для спецификаторов типа (например, const)
Ну вот, теперь сразу видно что это ::
#define _CSTD ::
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как правильно сравнивать два числа типа float и double? Следующий способ часто говорит, что одинаковые числа различны:
Есть ли в GCC аналог microsoft'овских property https://msdnmicrosoft
Столкнулся с ошибкой:
У меня задача: есть некое изображение, на котором надо выделить прямоугольную рамку и на выходе получить координаты левой верхней и правой...