fileno, F_LOCK и F_ULOCK становятся необъявленными и недоступными, когда я добавляю флаг std=c99 к gcc

Много других ответов смотрит на вещи слишком узко.

, Как они говорят, если Вы пишете код приложения, Вы не должны ловить Throwable. Вы ничего не можете делать с этим, таким образом позволение окружающей системы (JVM или платформа) для обработки этих проблем является лучшим.

Однако, если Вы пишете "системный код", как платформа или другой код низкого уровня тогда, можно хотеть поймать Throwable. Причина к попытка для создания отчетов об исключении, возможно, в файле журнала. В некоторых случаях Ваш вход перестанет работать, но в большинстве случаев он успешно выполнится, и у Вас будет информация, необходимо решить вопрос. Как только Вы предприняли свою попытку входа, необходимо тогда или повторно бросить, уничтожить текущий поток или выйти из всей JVM.

6
задан Greg Rogers 14 September 2009 в 18:52
поделиться

3 ответа

Вам необходимо указать заголовкам, что вам нужны расширения POSIX. Сейчас я использую:

#if __STDC_VERSION__ >= 199901L
#define _XOPEN_SOURCE 600
#else
#define _XOPEN_SOURCE 500
#endif /* __STDC_VERSION__ */

Если я компилирую с -std = c89 , он дает правильную версию POSIX; если вы компилируете с помощью -std = c89 , он дает правильную версию POSIX. Я использую это в Solaris 9 и 10, MacOS X (10.4.x, 10.5.x), HP-UX 11.x, Linux (RHEL4 и 5, SuSE 9 и 10) и AIX 5.x и 6.x - AFAICR , пока без проблем.

Эта строфа должна появиться перед включением любых системных заголовков (в ваш собственный заголовок или в каждый исходный файл), или вам нужно добиться того же эффекта с помощью -D_XOPEN_SOURCE = 600 в командной строке компилятора или другим подобным механизмом.

8
ответ дан 8 December 2019 в 17:24
поделиться

Вы можете попробовать -D_BSD_SOURCE для включения BSD-измов или -D_SVID_SOURCE для включения измов System-V

1
ответ дан 8 December 2019 в 17:24
поделиться

Это сообщение в блоге должно содержать исчерпывающий ответ: http://blogs.microsoft.co.il/blogs/tomershamam/archive/2007/05/25/ Скомпилированный-XAML- 3D00 -BAML-not-IL. aspx

Вчера я читал лекцию о XAML, и был задан следующий вопрос: Почему XAML компилируется в BAML, а не напрямую в IL для повышения производительности?

Прежде чем дать правильный ответ, я хочу объяснить, что такое BAML.

] Фактически существует два способа обработки файла XAML: свободный или скомпилированный.

  1. Свободный файл XAML следует анализировать во время выполнения, и его можно развернуть как простой файл XML локально, удаленно или встроить в сборку.
  2. Скомпилированный - это файл XAML, помеченный как «Страница» в Visual Studio (в MSBuild), развернутый как файл BAML (язык разметки двоичных приложений) и внедренный как ресурс сборки.

Свободный файл XAML не может включать ] x: Class Ключевое слово XAML, также оно не может ни встраивать исходный код, ни выдавать код любыми способами. Можно загрузить свободный файл XAML, вызвав метод XamlReader.Load (), приведение возвращаемого значения к корневому элементу. Свободная версия XAML обеспечивает динамический способ загрузки и изменения представления, но обеспечивает низкую производительность из-за того, что файл XML анализируется во время выполнения.

Скомпилированный файл XAML (BAML) может генерировать код, используя ] x: Class , или, например, путем регистрации событий. Можно загрузить элемент изнутри BAML, вызвав Application.LoadComponent () , преобразовав возвращаемое значение в корневой элемент. Скомпилированная версия XAML обеспечивает лучшую производительность, поскольку она является предварительно токенизированной двоичной версией файла XAML, следовательно, она меньше по размеру и может загружаться быстрее, но не является динамической.

Когда-то давно существовал CAML. CAML был точной версией IL скомпилированного файла XAML. К сожалению, команда WPF решила устранить это,

5
ответ дан 8 December 2019 в 17:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: