Алексей Махоткин

домашняя страница

Autoconf

Go to the first, previous, next, last section, table of contents.


Характеристики компилятора C

@anchor{C Compiler Characteristics}

Следующие макросы выполняют проверку свойств компилятора C или архитектуры машины. Для проверки характеристик, не перечисленных в этом разделе, используйте макросы AC_TRY_COMPILE (see section Проверка синтаксиса) или AC_TRY_RUN (see section Проверка поведения во время выполнения).

Macro: AC_C_BIGENDIAN
Если слова хранятся в порядке, когда самый значимый байт хранится первым (подобно процессорам Motorola и SPARC, но не Intel и VAX), то определяется переменная WORDS_BIGENDIAN.

Macro: AC_C_CONST
Если компилятор C не поддерживает полностью ключевое слово const, то макросу const присваивается пустое значение. Некоторые компиляторы C не определяют константу __STDC__, но поддерживают const; некоторые компиляторы, определяющие __STDC__, не полностью поддерживают const. Программы могут просто использовать const, как будто любой компилятор C поддерживает его; для тех компиляторов, которые не имеют такой поддержки, `Makefile’ или заголовочный файл настройки определят это слово как имеющее пустое значение.

Macro: AC_C_INLINE
Если компилятор C поддерживает inline, то ничего не делается. В противном случае, inline определяется равным __inline__ или __inline, если компилятор поддерживает один из этих вариантов, иначе inline определяется равным пустому значению.

Macro: AC_C_CHAR_UNSIGNED
Если тип C char является беззнаковым, то определяется переменная __CHAR_UNSIGNED__ (если компилятор C еще не определил ее).

Macro: AC_C_LONG_DOUBLE
Если компилятор C поддерживает тип long double, то определяется переменная HAVE_LONG_DOUBLE. Некоторые компиляторы C, которые не определяют __STDC__, поддерживают long double; а некоторые компиляторы, определяющие __STDC__, не поддерживают тип long double.

Macro: AC_C_STRINGIZE
Если препроцессор C поддерживает строковый (stringizing) оператор, то определяется переменная HAVE_STRINGIZE. Строковым (stringinzing)оператором является `#’ и он используется в макросах, например:
#define x(y) #y

Macro: AC_CHECK_SIZEOF (type [, cross-size])
Определить SIZEOF_uctype равным числу байтов во встроенном типе C (или C++) type, например, `int’ или `char *’. Если `type’ неизвестен компилятору, то переменная получает значение 0. uctype является type, со строчными буквами, преобразованными в прописные, пробелы преобразуются в знаки подчеркивания, и знаки звездочка (*) заменяются на `P’. Если производится кросс-компиляция, то используется значение cross-size (если оно задано), в противном случае configure прекращает работу с выдачей сообщения об ошибке.

Например, вызов

AC_CHECK_SIZEOF(int *)

определяет SIZEOF_INT_P равным 8 на системах DEC Alpha AXP.

Macro: AC_INT_16_BITS
Если тип int имеет размер 16 бит, то определяется переменная INT_16_BITS. Этот макрос является устаревшим; вместо него лучше использовать общий макрос `AC_CHECK_SIZEOF(int)’.

Macro: AC_LONG_64_BITS
Если тип long int имеет размер 64 бита, то определяется переменная LONG_64_BITS. Этот макрос является устаревшим; вместо него лучше использовать вызов `AC_CHECK_SIZEOF(long)’.


Go to the first, previous, next, last section, table of contents.

Comments