информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыСетевые кракеры и правда о деле ЛевинаSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
а почему gcc компилит?? или там стандарты другие? 05.11.04 17:20  Число просмотров: 1581
Автор: zelych Статус: Member
<"чистая" ссылка>
<programming>
gcc против msvc 02.11.04 14:59  
Автор: zelych Статус: Member
<"чистая" ссылка>
Есть небольшой кусочек исходников из линуксового ядра. Хотелось бы откомпилировать его под msvc с минималными изменениями.

возникает непонятный трабл: error C2054: expected '(' to follow 'inline'

static inline struct reiserfs_inide_info* REISERFS_I(const struct inode *inode)
{
return container_of(inode, struct reiserfs_inode_info, vfs_inode);
}

и ещё вопросик. Зачем двоеточия нужны??

struct offset_v2 {
#ifdef __LITTLE_ENDIAN
__u64 k_offset:60;
__u64 k_type: 4;
#else
__u64 k_type: 4;
__u64 k_offset:60;
#endif
}_attribute_(_packed_);

интуитивно, вроде, размер структуры 8 байт, только поделили её на две части 7.5 и 0.5 байта..
забыл только посмотреть как всё это дальше используется..
Дык нету в стандартном C слова inline. MSVC распознает его... 02.11.04 15:47  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> возникает непонятный трабл: error C2054: expected '(' to
> follow 'inline'
>
> static inline struct reiserfs_inide_info* REISERFS_I(const
> struct inode *inode)
> {
> return container_of(inode, struct reiserfs_inode_info,
> vfs_inode);
> }
Дык нету в стандартном C слова inline. MSVC распознает его как идентификатор и пытается распознать объявление прототипа функции. Вот и ждет скобку. Или компили как C++ или используй MSVC-шное расширение __inline (или __forceinline), которое работает и в C.

> и ещё вопросик. Зачем двоеточия нужны??
>
> struct offset_v2 {
> #ifdef __LITTLE_ENDIAN
> __u64 k_offset:60;
> __u64 k_type: 4;
> #else
> __u64 k_type: 4;
> __u64 k_offset:60;
> #endif
> }_attribute_(_packed_);
>
> интуитивно, вроде, размер структуры 8 байт, только поделили
> её на две части 7.5 и 0.5 байта..
> забыл только посмотреть как всё это дальше используется..
Дык это т.н. битовые поля. Именно так как интуитивно понял они и используются.
а почему gcc компилит?? или там стандарты другие? 05.11.04 17:20  
Автор: zelych Статус: Member
<"чистая" ссылка>
Там *расширения* другие 05.11.04 17:45  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
В режиме совместимости с ANSI компилиться не будет
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach