Jump to content

    
Sign in to follow this  
Сергей Борщ

_Pragma(), етить ее!

Recommended Posts

Имеем:

#pragma segment = "INT_HANDLERS"
#pragma location = "INT_HANDLERS"

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

Share this post


Link to post
Share on other sites
Голову сломал.

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

 

Удивил :), не ожидал от тебя:

#define I_LOC _Pragma( "location=\"INT_HANDLERS\"" )

как и

printf( "Hello from \"Hell\"! " );

Share this post


Link to post
Share on other sites
Смотрю решил сделать порт на STR71x ???
Угу, его и мучаю. Ты был прав - мама дорогая, до чего же кривой контроллер прерываний!

не ожидал от тебя:
И правда, прошло. Просто вчера, когда с паковкой возился пытался сделать что-то похожее (передать аргумент #define внутрь _Pragma("pack (push, N)" и ничего не получилось. Вот и решил, чо тут по аналогии будет ж будут те же грабли.

Share this post


Link to post
Share on other sites
вчера, когда с паковкой возился пытался сделать что-то похожее (передать аргумент #define внутрь _Pragma("pack (push, N)" и ничего не получилось.

Ну тут отцы-основатели недоделали ## :( могли-бы 'правильно' склеивать строки а не в рассчете, например, на printf() который сам потом доклеит. Тогда-бы и вещи типа:

#define PPP(x) _Pragma( "pack (push,"###x##")"

работали-бы на ура.

Натыкался тоже уже однажды на подобное неудобство :(

Share this post


Link to post
Share on other sites
Ну тут отцы-основатели недоделали ## :(
Или решение есть, но мы его пока не знаем. На этом считаем исходную тему исчерпавшей себя. Закрываю. Обсуждение _Pragma("pack(push, N")) продолжаем в другой ветке.

Share this post


Link to post
Share on other sites
Или решение есть, но мы его пока не знаем.

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

Вот на этой безрадостной ноте и можно закрыть :(.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this