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

 
 
> Директива компилятора в ассемблерной вставке
Злодей
сообщение Apr 26 2009, 17:07
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 29-04-08
Из: Петербург
Пользователь №: 37 142



Доброго вечера!

Код
#define ADDRESS 0x3800 /*байт-адрес*/

void magic_function( void )
{
    /*   ...   */
    
    //теперь бы прыгнуть в ADDRESS.
    __asm__ __volatile__ ( "jmp " #(ADDRESS/2) );
}


Компилятор не понимает решетку. Помогите пожалуйста.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Злодей
сообщение Apr 28 2009, 06:04
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 29-04-08
Из: Петербург
Пользователь №: 37 142



Теперь уже без ассемблерной вставки. Хочу вот такую штуку:

Код
#define STRING foo
#if ( STRING == foo )


Но выражение остаётся истинно, когда изменяю STRING.

Сообщение отредактировал Злодей - Apr 28 2009, 06:05
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 28 2009, 07:04
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Злодей @ Apr 28 2009, 09:04) *
Код
#define STRING foo
#if ( STRING == foo )


Но выражение остаётся истинно, когда изменяю STRING.
Что значит "изменяю STRING"? Покажите, как. И как у вас перед этим объявлен foo?
На всякий случай: читайте доки... выражение для #if - целочисленное. Там же описано, что необъявленный макрос трактуется как ноль.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 17:27
Рейтинг@Mail.ru


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