Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];

Вниз

Помогите перевести с C на Pascal   Найти похожие ветки 

 
AlexKniga ©   (2006-08-11 10:13) [0]

#define EMF_FORWDED ( 1 << 3 )

В Паскалевском написании это будет
const EMF_FORWDED = ( 1 shl 3 );
?


 
Jeer ©   (2006-08-11 10:21) [1]

Будь проще:)

const
 EMF_FORWDED = 8;


 
AlexKniga ©   (2006-08-11 10:41) [2]

Jeer
Спасибо!
Я не был уверен, чтот "<<" в данном случае битовый сдвиг.


 
DrPass ©   (2006-08-11 10:52) [3]


> #define EMF_FORWDED ( 1 << 3 )

Наверное, писавший этот дефайн программист истекал слюнями от собственной крутизны


 
Desdechado ©   (2006-08-11 12:17) [4]

А что, в Дельфи {$DEFINE} уже непопулярен?


 
Юрий Зотов ©   (2006-08-11 12:33) [5]

> Desdechado ©   (11.08.06 12:17) [4]

Популярен, но имеет несколько другое назначение.


 
Desdechado ©   (2006-08-11 12:42) [6]

> Юрий Зотов ©   (11.08.06 12:33) [5]
Какое из назначений использовалось в тексте, приведенном автором, не известно. В си оно многозначное. Можно использовать как подстановку в тексте, а можно для всяких условностей при компиляции, а можно и комбинировать.


 
clickmaker ©   (2006-08-11 13:21) [7]


> Наверное, писавший этот дефайн программист истекал слюнями
> от собственной крутизны

в соседней ветке вообще (1<<0). Вот уж где крутизна )


 
evvcom ©   (2006-08-11 13:28) [8]

> [7] clickmaker ©   (11.08.06 13:21)

Еще на это можно было || 0 добавить и другие подобные прибамбасы :)


 
Don Nikola ©   (2006-08-11 13:32) [9]

2AlexKniga:

Вы думаете, что сишники могли написать "1 shr 3"? Они хоть и сишники, но не настолько же.


 
evvcom ©   (2006-08-11 13:32) [10]

> [3] DrPass ©   (11.08.06 10:52)

Кстати, такая запись может быть была сделана из соображений наглядности при работе с битами, что в EMF_FORWDED установлен 3 бит. А в восьмерке это еще надо посчитать.


 
Jeer ©   (2006-08-11 13:36) [11]

DrPass ©   (11.08.06 10:52) [3]
clickmaker ©   (11.08.06 13:21) [7]

Это не крутизма, а весьма распространенный прием внесения дополнительной семантики в программу, а значит повышение ее надежности.

Кстати, я в паскале пользуюсь таким же и вот для чего.

Достаточно часто используются маскирующие/выделяющие константы,
а железячники  помнят наизусть назначения бит в интерфейсах.:)

Если мне нужно выделить 23-й бит, то логично определить константу
как
c23b = 1 shl 23;
а не считать 2^23 и
c23b = 8388608;
тем более, что будет абсолютно непонятно, сколько там единиц.

Или для выделение 23 и 25 бит я точно напишу
c25_23 = 5 shl 23;
а не 41943040 :))

Еще пример - вызов функции с флагом, значение которого определяется как cA or cB or cF и тп

Логично определять константы таким образом:
cA = 1 shl 0;
cB = 1 shl 1
cC = 1 shl 2;

Так шта...


 
DrPass ©   (2006-08-11 13:40) [12]


> Jeer ©   (11.08.06 13:36) [11]


> evvcom ©   (11.08.06 13:32) [10]

А чем hex-константы не подходят-то? Запомнить 16 кодов проще чем таблицу умножения.


 
Jeer ©   (2006-08-11 14:01) [13]

DrPass ©   (11.08.06 13:40) [12]

Но надежнее, опять-таки, явно указывать нужный бит
а с FA можно и ошибиться при переводе.

Пример, маскирующая константа на 7-й бит

const
c7reset: word =  MaxWord - (1 shl 7);


 
evvcom ©   (2006-08-11 14:13) [14]

> [12] DrPass ©   (11.08.06 13:40)
> А чем hex-константы не подходят-то?

Подходят, почему нет-то? Просто у каждого свои восприятия различных представлений. Я просто предположил причину.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.042 c
2-1157111455
Iuda_iz_Kf
2006-09-01 15:50
2006.09.24
Управление LPT портом


15-1157038248
Sergey Masloff
2006-08-31 19:30
2006.09.24
offtop:Меломаны, кому нужен бы Atomic Rooster? Их есть у меня


15-1157366439
ddddd
2006-09-04 14:40
2006.09.24
Как в ссылке прописать место в странице?


15-1157272702
Проггер из библиотеки
2006-09-03 12:38
2006.09.24
Глюки в программах


2-1157443259
VitV
2006-09-05 12:00
2006.09.24
Построение графика в FastReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский