Java SWT: обернуть основной цикл в обработчик исключений?

В настоящее время я использую функцию popen в коде, который скомпилирован двумя компиляторами: MS Visual Studio и gcc (в Linux). Возможно, я захочу добавить gcc (в MinGW) позже.

Функция называется popen для gcc, но _popen для MSVS, поэтому я добавил в свой исходный код следующее:

#ifdef _MSC_VER
#define popen _popen
#define pclose _pclose
#endif

Это работает, но я хотел бы понять, существует ли стандартное решение для таких проблем (я вспоминаю аналогичный случай с stricmp / strcasecmp ). В частности, я хотел бы понять следующее:

  1. Является ли _MSC_VER правильным флагом, от которого следует зависеть? Я выбрал его, потому что у меня сложилось впечатление, что среда linux «более стандартна».
  2. Если я помещу эти #define в какой-то файл заголовка, важно ли я #include это до или после stdio.h (для случая popen )?
  3. If _popen определяется как сам макрос, есть ли вероятность того, что мой #define не сработает? Должен ли я использовать вместо этого «новый» токен, например my_popen , по той или иной причине?
  4. Кто-то уже выполнил эту работу за меня и создал хороший файл «заголовка переносимости», который я могу использовать?
  5. Что еще мне следует знать?
5
задан anatolyg 30 January 2011 в 16:45
поделиться