2013-05-17 3 views
3

Может кто-нибудь опубликовать результаты cpp -dM < /dev/null из системы Solaris 10 или выше?Макросы Solaris и Preprocessor

У меня возникли проблемы с определением того, какие макросы препроцессора обычно определены. Документация Solaris не обсуждает ее подробно [1], [2], и Google не очень помогает.

Заранее спасибо.

+3

Если вы используете компиляторы Solaris Studio, предопределенный список находится под флагом -D на [странице man cc] (http://docs.oracle.com/) кд/E24457_01/html/E22003/cc.1.html). – alanc

+0

Спасибо Алан. ххх. – jww

ответ

4

Solaris 11.1

#define __DBL_MIN_EXP__ (-1021) 
#define __FLT_MIN__ 1.17549435e-38F 
#define __CHAR_BIT__ 8 
#define __WCHAR_MAX__ 2147483647 
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324 
#define __FLT_EVAL_METHOD__ 0 
#define __DBL_MIN_10_EXP__ (-307) 
#define __FINITE_MATH_ONLY__ 0 
#define __GNUC_PATCHLEVEL__ 3 
#define sparc 1 
#define __SHRT_MAX__ 32767 
#define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L 
#define __unix 1 
#define __LDBL_MAX_EXP__ 16384 
#define __SCHAR_MAX__ 127 
#define __USER_LABEL_PREFIX__ 
#define __STDC_HOSTED__ 1 
#define __LDBL_HAS_INFINITY__ 1 
#define __DBL_DIG__ 15 
#define __FLT_EPSILON__ 1.19209290e-7F 
#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L 
#define __unix__ 1 
#define __DECIMAL_DIG__ 36 
#define __LDBL_HAS_QUIET_NAN__ 1 
#define __GNUC__ 3 
#define __DBL_MAX__ 1.7976931348623157e+308 
#define __DBL_HAS_INFINITY__ 1 
#define __SVR4 1 
#define __DBL_MAX_EXP__ 1024 
#define __LONG_LONG_MAX__ 9223372036854775807LL 
#define __sparc__ 1 
#define __GXX_ABI_VERSION 1002 
#define __FLT_MIN_EXP__ (-125) 
#define __DBL_MIN__ 2.2250738585072014e-308 
#define __DBL_HAS_QUIET_NAN__ 1 
#define __sun 1 
#define __REGISTER_PREFIX__ 
#define __NO_INLINE__ 1 
#define __FLT_MANT_DIG__ 24 
#define __VERSION__ "3.4.3 (csl-sol210-3_4-20050802)" 
#define __sparc 1 
#define sun 1 
#define unix 1 
#define __SIZE_TYPE__ unsigned int 
#define __ELF__ 1 
#define __FLT_RADIX__ 2 
#define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L 
#define __FLT_HAS_QUIET_NAN__ 1 
#define __FLT_MAX_10_EXP__ 38 
#define __LONG_MAX__ 2147483647L 
#define __FLT_HAS_INFINITY__ 1 
#define __PRAGMA_REDEFINE_EXTNAME 1 
#define __LDBL_MANT_DIG__ 113 
#define __WCHAR_TYPE__ long int 
#define __FLT_DIG__ 6 
#define __INT_MAX__ 2147483647 
#define __FLT_MAX_EXP__ 128 
#define __DBL_MANT_DIG__ 53 
#define __WINT_TYPE__ long int 
#define __LDBL_MIN_EXP__ (-16381) 
#define __LDBL_MAX_10_EXP__ 4932 
#define __DBL_EPSILON__ 2.2204460492503131e-16 
#define __sun__ 1 
#define __svr4__ 1 
#define __FLT_DENORM_MIN__ 1.40129846e-45F 
#define __FLT_MAX__ 3.40282347e+38F 
#define __FLT_MIN_10_EXP__ (-37) 
#define __GNUC_MINOR__ 4 
#define __DBL_MAX_10_EXP__ 308 
#define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L 
#define __PTRDIFF_TYPE__ int 
#define __LDBL_MIN_10_EXP__ (-4931) 
#define __LDBL_DIG__ 33 
+0

Большое спасибо. – jww

+0

Это интересно. Ни Solaris, ни его версия не отображаются на дампе. – jww

+2

Solaris традиционно обнаруживается с # # определенным (__ sun) && определенным (__ SVR4) ', хотя проверка на' __SVR4' интересна сейчас, если вам нужно убедиться, что вы не работаете на 20-летнем SunOS 4. Компиляторы Solaris Studio дополнительно определяют макрос, зависящий от ОС, такой как '__SunOS_5_11', но это флаг -D, который cc & CC передает в препроцессор, а не в значение cpp-builtin. – alanc

2

@jens:

Sparc системы с Solaris 10 и далее всегда 64bit. Системы X64 поставлялись с Solaris 10, хотя вы все равно могли загружать 32-битное ядро ​​x86.

$ isainfo 
amd64 i386 
$ isainfo -b 
64 
$ isainfo -v 
    64-bit amd64 applications 
     avx xsave pclmulqdq aes sse4.2 sse4.1 ssse3 popcnt tscp ahf cx16 sse3 
     sse2 sse fxsr mmx cmov amd_sysc cx8 tsc fpu efs f16c rdrand 
    32-bit i386 applications 
     avx xsave pclmulqdq aes sse4.2 sse4.1 ssse3 popcnt tscp ahf cx16 sse3 
     sse2 sse fxsr mmx cmov sep cx8 tsc fpu efs f16c rdrand 

/usr/bin/isainfo является вашим другом, из командной строки.

С программной точки зрения изучите #define в <sys/feature_tests.h>. Вы заметите, что _LP64 ...

+0

Пожалуйста, взгляните на [Как распечатать макросы препроцессора под Sun Studio?] (Http://stackoverflow.com/q/37715467), когда у вас есть момент. – jww