ifdef & solaris - PullRequest
       21

ifdef & solaris

1 голос
/ 26 июля 2010

Я хочу отменить определение переменной при компиляции в SunOS. Поэтому я попытался поставить

#ifdef SunOS
#undef FOO
#endif

но это не работает. Проблема в #ifdef sunos? Должен ли я объявить это, или Complier сделать это сам?

С уважением S.

Ответы [ 3 ]

6 голосов
/ 26 июля 2010

Я не знаю ни одного компилятора для Solaris, который бы предопределил для вас SunOS.

Компиляторы Sun перечисляют макросы, которые они предопределяют, на справочной странице 'cc' в описании опции -D,включая __sun и __SunOS_5_10 (для uname -r "5.10"), но не просто SunOS.

3 голосов
/ 26 июля 2010

Ваш компилятор будет включать несколько предопределенных переменных. Обратитесь к документации вашего компилятора, чтобы узнать, что это за список.

Если вы пытаетесь сделать часть программного обеспечения доступной для нескольких (unixlike) платформ, взгляните на autoconf . У него немного кривая обучения, но в долгосрочной перспективе он очень хорошо окупается.

Дополнительно: Кроме того, ваш компилятор может иметь способ перечисления предопределенных макросов. Например, при использовании gcc, touch foo.h; cpp -dM foo.h создает список всего того, что доходит до 119 с gcc на OS X. Но документация, вероятно, даст некоторое представление о рекомендуемых макросах этого компилятора для этого (но autoconf остается лучшим методом для этого в общем).

0 голосов
/ 26 июля 2010

В этом нет ничего плохого, cpp примите этот фрагмент просто отлично.В чем проблема, которую вы видите?

...