Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
Дык нету в стандартном C слова inline. MSVC распознает его... 02.11.04 15:47 Число просмотров: 1875
Автор: 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 байта.. > забыл только посмотреть как всё это дальше используется.. Дык это т.н. битовые поля. Именно так как интуитивно понял они и используются.
|
<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 компилиться не будет
|
|
|