реклама на сайте
подробности

 
 
> Сделать из дефайна функцию.
Jenya7
сообщение Jun 12 2017, 14:14
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Я запутался. В Линуксе есть дефайн
Код
#define DIV_ROUND_CLOSEST(x, divisor)         \
{                                             \
    typeof(x) __x = x;                        \
    typeof(divisor) __d = divisor;            \
    (((typeof(x))-1) > 0 ||                   \
    ((typeof(divisor))-1) > 0 || (__x) > 0) ? \
    (((__x) + ((__d) / 2)) / (__d)) :         \
    (((__x) - ((__d) / 2)) / (__d));}

Как мне из него сделать С функцию?
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 19)
k155la3
сообщение Jun 14 2017, 06:29
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(esaulenka @ Jun 13 2017, 18:02) *
(1) Гугл-то вы используете?
(2)((typeof(x))-1)
(3)Зачем что-то изобретать на ровном месте, если есть документация?!

(1) Да.
(2) (?)
Код
float x;
(
    ( ( typeof(x) ) -1 ) > 0
) == (TRUE / FALSE ) (?)

(3) Исходя из постулатов (1)+(3) надо всех вопрошающих посылать в Google.
Примеры приведенные Вами я видел, но не стал цитировать.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 14 2017, 06:49
Сообщение #17


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Когда такое возможно?
(typeof(x))-1) > 0
Go to the top of the page
 
+Quote Post
megajohn
сообщение Jun 14 2017, 07:09
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(ViKo @ Jun 14 2017, 09:49) *
Когда такое возможно?
(typeof(x))-1) > 0


здрасьте
uint32_t i = 0;
i--;
тогда i = 0xFFFFFFF;


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 14 2017, 07:39
Сообщение #19


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



То есть, так проверяется, что x беззнакового типа?
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jun 14 2017, 12:03
Сообщение #20


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



На С++ я бы начал с такой реализации. WARNING! Не тестировалось! Но вроде должно работать....
Код
template <typename T, typename V>
T DIV_ROUND_CLOSEST_CPP(T x, V divisor)
{
    return ( T(1) > 0 || V(-1) > 0 || x > 0) ?
    ((x + (divisor / 2)) / divisor):
    ((x - (divisor / 2)) / divisor);
}


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 10:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016