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

 
 
> Keil preprocessor аля MACRO в assembler, Как возвести в степень на стадии компиляции
AndreyS
сообщение Dec 24 2007, 14:51
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Добрый день всем.

Меня интересует вопрос и очень давно.
Как в Си Keil с помощью команд препроцессора произвести некое вычисление с количеством итираций болшее 1.

Например раньше в асме у меня это не вызывало проблем через директиву SET.
В Си не нашел (может плохо искал). Но на #define SS SS+2 компилятор ругается. В целом варнинги не напрягают. А напрягает их количество, если я делаю такое большое число раз.

Подскажите плиз, как на стадии компиляции мне высичлить константу???

Например это нужно для вычисления значения 2^x

Спасибо.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение Dec 24 2007, 16:04
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата
на #define SS SS+2 компилятор ругается.


Странная конструкция... Вы что хотели то определить?

Цитата
Например это нужно для вычисления значения 2^x


Например, так

#define E2(X) (1 << (X))
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Dec 24 2007, 19:06
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(Палыч @ Dec 24 2007, 19:04) *
Странная конструкция... Вы что хотели то определить?
Например, так

#define E2(X) (1 << (X))



Спасибо.

Вы задали вектор моим размышлениям smile.gif

А конструкцией я пытался реализовать следующее ss+=2;


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 25 2007, 07:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(AndreyS @ Dec 24 2007, 22:06) *
А конструкцией я пытался реализовать следующее ss+=2;
В ассемблере есть (обычно) директива SET и директива EQU - препроцессорный define, скорее, аналог последней: вместо определенного в define идентификатора подставляется его значение в текст программы. Первые препроцессоры были совершенно отделены от транслятора, и тупо подставляли в тексте программы вместо одной последовательности символов другую, ничего не зная о значениях этих символов. Сейчас, хотя препроцессор и интегрирован с транслятором, но "нарастить" значения идентификаторов попрежнему не может. Впрочем, нужно ли это? Я себе не представляю программу, в которой это пригодилось бы.
Go to the top of the page
 
+Quote Post



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

 


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


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