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

 
 
> _Pragma(), етить ее!, как в нее всунуть значение с кавычками?
Сергей Борщ
сообщение Jul 4 2007, 21:54
Сообщение #1


Гуру
******

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



Имеем:
Код
#pragma segment = "INT_HANDLERS"
#pragma location = "INT_HANDLERS"
В задачнике спрашивается, как это засунуть в _Pragma(), чтобы использовать внутри #define? Ведь _Pragma() сама хочет свой аргумент видеть в кавычках. Голову сломал.


--------------------
На любой вопрос даю любой ответ
"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
 
Start new topic
Ответов (1 - 5)
zltigo
сообщение Jul 4 2007, 22:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Сергей Борщ @ Jul 5 2007, 00:54) *
Голову сломал.

Смотрю решил сделать порт на STR71x ???

Удивил smile.gif, не ожидал от тебя:
#define I_LOC _Pragma( "location=\"INT_HANDLERS\"" )
как и
printf( "Hello from \"Hell\"! " );


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 4 2007, 22:48
Сообщение #3


Гуру
******

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



Цитата(zltigo @ Jul 5 2007, 01:05) *
Смотрю решил сделать порт на STR71x ???
Угу, его и мучаю. Ты был прав - мама дорогая, до чего же кривой контроллер прерываний!
Цитата(zltigo @ Jul 5 2007, 01:05) *
не ожидал от тебя:
И правда, прошло. Просто вчера, когда с паковкой возился пытался сделать что-то похожее (передать аргумент #define внутрь _Pragma("pack (push, N)" и ничего не получилось. Вот и решил, чо тут по аналогии будет ж будут те же грабли.


--------------------
На любой вопрос даю любой ответ
"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
zltigo
сообщение Jul 5 2007, 09:23
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Сергей Борщ @ Jul 5 2007, 01:48) *
вчера, когда с паковкой возился пытался сделать что-то похожее (передать аргумент #define внутрь _Pragma("pack (push, N)" и ничего не получилось.

Ну тут отцы-основатели недоделали ## sad.gif могли-бы 'правильно' склеивать строки а не в рассчете, например, на printf() который сам потом доклеит. Тогда-бы и вещи типа:
Код
#define PPP(x) _Pragma( "pack (push,"###x##")"

работали-бы на ура.
Натыкался тоже уже однажды на подобное неудобство sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 5 2007, 10:14
Сообщение #5


Гуру
******

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



Цитата(zltigo @ Jul 5 2007, 12:23) *
Ну тут отцы-основатели недоделали ## sad.gif
Или решение есть, но мы его пока не знаем. На этом считаем исходную тему исчерпавшей себя. Закрываю. Обсуждение _Pragma("pack(push, N")) продолжаем в другой ветке.


--------------------
На любой вопрос даю любой ответ
"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
zltigo
сообщение Jul 5 2007, 10:48
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Сергей Борщ @ Jul 5 2007, 13:14) *
Или решение есть, но мы его пока не знаем.

Решения нет, ибо подстановки в стрингах, естествено, не работают, а предусмотренный для обхода такого механизм склеивания литералов, как я уже писал, слишком примитивно работает при склеивании строк sad.gif.
Вот на этой безрадостной ноте и можно закрыть sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


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


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