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

 
 
> Преобразование не стандартных записей из GNU С в стандарт ISO.
Oleg_IT
сообщение Apr 10 2011, 18:24
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Мало программировал на GNU С. Тут столкнулся с необходимостью перевода текста написанного для GNU на Visual Studio. Столкнулся с особенностями, отличиями от ISO. Где бы почитать о том, как правильно эти особенности обработать?

Примеры особенностей
__attribute__((packed))
__attribute__((__nonnull__(1,2)))
__pure
__attribute__((packed))
__ESCAPE__
restrict


Не нравится компилятору inline в хедер файле, когда этот хедр включён в *.c файл, в *.cpp ошибок не выдаёт

Код
static inline unsigned int CMP___(unsigned int a, unsigned int b)
{
    return (unsigned int)(a < b);
}

В объявление функции аргумент указатель на структуру. Компилятор выдаёт ошибку
1>d:\MyProj\util.h(582) : error C2373: 'cmp_func' : redefinition; different type modifiers…

Есть объявления

Код
typedef union {
    uint64_t u64;
    uint32_t u32[2];
    uint16_t u16[4];
    uint8_t  u8 [8];
    double   f64;
    float    f32[2];
} av_alias av_alias64;

typedef union {
    uint32_t u32;
    uint16_t u16[2];
    uint8_t  u8 [4];
    float    f32;
} av_alias av_alias32;

typedef union {
    uint16_t u16;
    uint8_t  u8 [2];
} av_alias av_alias16;

Компилятору не нравится повторение av_alias. av_alias используется в записи
Код
union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias;

И ещё там много всякой мелочи.

О каких-то записях догадки есть, но это догадки, а хочется быть уверенным в правильности перевода. Что-то есть в гугле.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MrYuran
сообщение Apr 11 2011, 05:27
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Oleg_IT @ Apr 10 2011, 22:24) *
__attribute__((packed))

В некоторых конфессиях выглядит как #pragma pack
Означает упаковку объекта


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Apr 12 2011, 09:43
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(MrYuran @ Apr 11 2011, 09:27) *
В некоторых конфессиях выглядит как #pragma pack
Означает упаковку объекта

#pragma pack обычно идёт с числом, на сколько выравнивать. А тут выравнивание по умолчанию на 1?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 05:45
Рейтинг@Mail.ru


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