Здравствуйте. Есть код: Код (Text): static void swfdec_player_update_mouse_cursor (SwfdecPlayer *player) { SwfdecMouseCursor new = SWFDEC_MOUSE_CURSOR_NORMAL; if (!player->mouse_visible) { new = SWFDEC_MOUSE_CURSOR_NONE; } else if (player->mouse_grab != NULL) { /* FIXME: this needs to be more sophisticated, since SwfdecEditText may * want to have different mouse cursors depending on location (it supports * links in theory) */ if (SWFDEC_IS_BUTTON_MOVIE (player->mouse_grab)) new = SWFDEC_MOUSE_CURSOR_CLICK; } if (new != player->mouse_cursor) { player->mouse_cursor = new; g_object_notify (G_OBJECT (player), "mouse-cursor"); } } ..... Код (Text): /* Largest integral types. */ #if __WORDSIZE == 64 typedef long int intmax_t; typedef unsigned long int uintmax_t; #else __extension__ typedef long long int intmax_t; __extension__ typedef unsigned long long int uintmax_t; #endif Это же не по стандарту? Хотел перенести на win и естественно не компилится. в первом случае (как я понял) просто gcc позволяет использовать "new" как имя, а во втором не понятно (в чем собственно и вопрос).
verelex Во втором случае, вожможно, не нравится "long long int". Хотя большинство компиляторов это поддерживают, и в стандарте это прописано... и что есть __extension__ ? Напиши хоть, какая ошибка. Вообще, пользоваться индивидуальными фичами компилеров - имхо искать себе приключений.
Ustus Напиши хоть, какая ошибка Наверное что-то похожее на : "xxxxxx.h(yyy) : error C2501: '__extension__' : missing storage-class or type specifiers" verelex Придется создать свой заголовочный файл и пополнять его по мере необходимости, начать с Код (Text): #ifdef _MSC_VER #define __extension__ #endif
точно, это же в С++ только. просто я никогда раньше не встречал "long long int". Получается наоборот - Visual не поддерживает, хотя допустимо? Спасибо всем!
Его недавно ввели в стандарт, но в самом стандартном стандарте от 98-го оно уже есть. Хотя в компилерах появилось раньше. Судя по всему было принято стандартом постфактум, как и многие другие расширения. P.S. Гы... а MSVC 7.0 действительно не жрет. error C2632: 'long' followed by 'long' is illegal ну тогда придется ему впихать что-то вроде Код (Text): #ifdef _MSC_VER typedef __int64 intmax_t; typedef unsigned __int64 uintmax_t; #endif можно еще проверить - может, в новых версиях уже работает long long.