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

 
 
> Преобразование не стандартных записей из 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



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

 


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


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