Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сборки MinGW (GCC-win32/win64) 
:(
    Опции темы
Randajad
Дата 26.6.2012, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Ом-ом-ом!
Не могу обнаружить в сборке от 25 числа i686 GCC 4.8 либу winhttp. Хидер есть, либы нету. :(

Добавлено через 56 секунд
На случай. Выдрал из студии 10-ой.

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  winhttp.lib 8,62 Kb
PM MAIL   Вверх
boostcoder
Дата 26.6.2012, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



эм..
PM WWW   Вверх
Randajad
Дата 3.7.2012, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



user posted image

Это гцц/афтар специально более 9000 одинаковых копирастов оставляет?
PM MAIL   Вверх
boostcoder
Дата 3.7.2012, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



я всего один раз указываю. и только для gcc.
PM WWW   Вверх
Randajad
Дата 4.7.2012, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Я бы сказал что это, а не GCC.

http://sourceforge.net/projects/mingwbuild...NAL.7z/download
Последняя релизная сборка.

Простой пример:

Код

int main() {
    wchar_t buf[2];
    int len = snwprintf(buf, sizeof(buf) / 2, L"world!");

    printf("%d\n", len);
}


Должно вывести -1. Выводит, если огородить этот пример от мира сего.

Просто инклюдим boost::system(он имеет какие-то статические объекты).
Код

#include <boost/system/system_error.hpp>


Этот невинный пример начинает требовать libboost_system. О-кей. Мы ему его дали.
Этот невинный пример начинает выводить 6.

Поищу нехорошие вещи в boost::system, отпишусь.
Но под вяндой мне этот компилятор начинает нравиться все меньше.

Добавлено @ 10:30
Обнаружил волшебный макрос, который заставляет boost::system не требовать либу. Если дефайнить BOOST_SYSTEM_NO_DEPRECATED, то все собирается и без либы, но результат такой же. Для чистоты эксперимента все собиралось с одним лишь -g.
Копать сотни хидеров буста не собираюсь, о баге отписался.
На сим удачи!

Это сообщение отредактировал(а) Randajad - 4.7.2012, 12:13
PM MAIL   Вверх
boostcoder
Дата 4.7.2012, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



посмотри, в экспорте msvcrt.dll есть экспорт этой функции? или только этой же функции но с лидирующим подчерком?
в msdn`е нашел только функцию с подчерком.

PM WWW   Вверх
Randajad
Дата 4.7.2012, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Код

/* __attribute__((__format__ (gnu_wprintf, 3, 4))) */ __MINGW_ATTRIB_NONNULL(3)
int snwprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, ...)
{
  register int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vsnwprintf( __stream, __n, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}


С бустотой оно юзает это из wchar.h.

Без бустоты оно юзает это

Код

  int snwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, ...)
  {
    int r;
    va_list argp;
    __builtin_va_start (argp, format);
    r = _vsnwprintf (s, n, format, argp);
    __builtin_va_end (argp);
    return r;
  }
  __mingw_ovr
  int __cdecl vsnwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, va_list arg)
  {
    return _vsnwprintf(s,n,format,arg);
  }


Из stdio.h. smile

Разгадка в __USE_MINGW_ANSI_STDIO, я не знаю, что его дефайнит.
PM MAIL   Вверх
boostcoder
Дата 4.7.2012, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



такая мысль еще посетила... может быть boost.system предоставляет реализацию snwprintf() ? smile 
PM WWW   Вверх
Randajad
Дата 4.7.2012, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Когда пофиксится моя бага с форматом строк в принтфе?


Цитата

Цитата

s — вывод строки с нулевым завершающим байтом; если модификатор длины — l, выводится строка wchar_t*. В Windows значения типа s зависят от типа используемых функций. Если используется семейство printf функций, то s обозначает строку char*. Если используется семейство wprintf функций, то s обозначает строку wchar_t*.
S — то же самое что и s с модификатором длины l; В Windows значения типа S зависит от типа используемых функций. Если используется семейство printf функций, то S обозначает строку wchar_t*. Если используется семейство wprintf функций, то S обозначает строку char*.


© Педивикия.

Однако в реальности %S в wprintf все также обозначает wchar_t * строку, а %s - все так же обычную char *.
GCC 4.7.



Из-за этого код непереносим под вяндой с GCC на MSVC/ICC.

Добавлено через 30 секунд
Нет, я подебажил. Смотреть выше. smile
PM MAIL   Вверх
boostcoder
Дата 4.7.2012, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Randajad @  4.7.2012,  12:15 Найти цитируемый пост)
Разгадка в __USE_MINGW_ANSI_STDIO, я не знаю, что его дефайнит.

наверное boost.system или включаемый им boost.config...


Это сообщение отредактировал(а) boostcoder - 4.7.2012, 12:19
PM WWW   Вверх
boostcoder
Дата 4.7.2012, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Randajad, так используя/не_используя __USE_MINGW_ANSI_STDIO, поведение воспроизводится по разному и без boost.system?

PM WWW   Вверх
Randajad
Дата 4.7.2012, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



Ога.
Без буста и без него - -1.
Без буста и с ним - 6.
PM MAIL   Вверх
boostcoder
Дата 4.7.2012, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



попробую у разрабов CRT`ишки узнать...
PM WWW   Вверх
boostcoder
Дата 10.7.2012, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



пересобрал MinGW на базе gcc-4.7.1-release.
обновил GDB до версии 7.4.1, и GNU make с этого момента собирается с поддержкой job-server.
для пользователей Qt это станет приятным бонусом, ибо теперь у них появится возможность производить сборку Qt и проектов основанных на .pro файлах в требуемое кол-во потоков.

качать архивы с пометкой 'rev2'.


зы
Randajad, по поводу бага с распараллеливанием LTO - я не забил.
по поводу бага с функцией snwprintf() - тоже не забил.


Это сообщение отредактировал(а) boostcoder - 10.7.2012, 17:32
PM WWW   Вверх
Randajad
Дата 10.7.2012, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



А на

Цитата

s — вывод строки с нулевым завершающим байтом; если модификатор длины — l, выводится строка wchar_t*. В Windows значения типа s зависят от типа используемых функций. Если используется семейство printf функций, то s обозначает строку char*. Если используется семейство wprintf функций, то s обозначает строку wchar_t*.
S — то же самое что и s с модификатором длины l; В Windows значения типа S зависит от типа используемых функций. Если используется семейство printf функций, то S обозначает строку wchar_t*. Если используется семейство wprintf функций, то S обозначает строку char*.


© Педивикия.

Однако в реальности %S в wprintf все также обозначает wchar_t * строку, а %s - все так же обычную char *.
GCC 4.7.


Забил? smile
Кстати, что насчет кланга? Вроде, говорил, что вопрос решается. smile
И вообще, добавляйся ваську! Если тебе интересна перспектива, что я буду тебя мучить. :3
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1512 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.