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

 
 
> совместное использование исходников IAR и GCC, как быть с #pragma pack?
Сергей Борщ
сообщение Jul 3 2007, 13:53
Сообщение #1


Гуру
******

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



Есть многопроцесорная система. Часть кода написана в IAR. Часть кода надо написать на WinAVR. Имеется несколько заголовочных файлов, описывающие нечто общее для всей системы, например структуры, которыми идет обмен по системной шине. Поскольку в системе используются и ARM и AVR приходится использовать упакованные структуры. Но этим двум компиляторам требуется описывать упаковку по-разному. Итого имеем:
Код
IAR:
#pragma pack (push,1)
struct tmp_t
{
    uint8_t     A;
    uint16_t    B;
};
#pragma pack (pop)

WinAVR:
struct tmp_t
{
    uint8_t     A;
    uint16_t    B;
}__attribute__((__packed__, __aligned__ (1)));
или
struct tmp_t __attribute__((__packed__, __aligned__ (1)));
struct tmp_t
{
    uint8_t     A;
    uint16_t    B;
};
Кто нибудь знает каким образом можно это объединить?


--------------------
На любой вопрос даю любой ответ
"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
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 18)
Petka
сообщение Sep 30 2009, 10:00
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Rst7 @ Sep 30 2009, 12:44) *
Не, не совсем так....

Именно так. Согласно С99 пункту 6.4.5 "String literals", раздел 7, подряд идущие строки клеятся в одну. "12" "3" эквивалентно "123". Делает ли так IAR не знаю.
Хотя ваш способ понятнее.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 30 2009, 10:29
Сообщение #17


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Хотя ваш способ понятнее.


Более того, мой способ работает, в отличии от Вашего wink.gif Я проверил - внутри _Pragma у IAR'а строки не склеиваются.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Petka
сообщение Sep 30 2009, 10:38
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Rst7 @ Sep 30 2009, 14:29) *
Более того, мой способ работает, в отличии от Вашего wink.gif Я проверил - внутри _Pragma у IAR'а строки не склеиваются.

Это и надо было проверить. Можете проверить, а снаружи прагмы строки клеятся или тоже нет?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 30 2009, 10:50
Сообщение #19


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Можете проверить, а снаружи прагмы строки клеятся или тоже нет?


Конечно клеит. Это только прагма такая особенная.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

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

 


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


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