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

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

Autoconf

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


Проверка базовых функций

@anchor{Generic Functions} Эти макросы используются для нахождения функций, которые не имеют специальных макросов проверки. Если функции могут находиться в других библиотеках, а не в стандартной библиотеке C, то сначала вызовите макрос AC_CHECK_LIB для проверки наличия нужных библиотек. Если вам нужно не только проверить, существует ли функция, но и уточнить ее поведение, то вам придется написать свой собственный тест для этой функции (see section Написание тестов).

Macro: AC_CHECK_FUNC (function, [action-if-found [, action-if-not-found]])
Если функция C с именем function доступна, то запускаются команды командного процессора action-if-found, в противном случае запускаются action-if-not-found. Если вы просто хотите определить символ препроцессора, если функция существует, то вместо этого макроса попробуйте использовать AC_CHECK_FUNCS. Этот макрос проверяет компоновку с библиотекой C, даже если был вызван макрос AC_LANG_CPLUSPLUS, поскольку C++ является более стандартизованным, чем C. (see section Выбор языка, для дополнительной информации о выборе языка, для которого проводятся проверки).

Macro: AC_CHECK_FUNCS (function… [, action-if-found [, action-if-not-found]])
Для каждой из заданных function в списке, разделенном пробелами, в случае если она доступна, определить переменную HAVE_function (все буквы заглавные). Если задан аргумент action-if-found, то выполняется дополнительный код командного процессора, если одна из функций найдена. Вы можете задать значение `break’ для прекращения цикла при нахождении первой функции. Если задан аргумент action-if-not-found, то эти команды выполняются, когда одна из функций не найдена.

Macro: AC_REPLACE_FUNCS (function…)
Этот макрос подобен вызову макроса AC_CHECK_FUNCS, используя код action-if-not-found, который добавляет `function.o’ к выходной переменной LIBOBJS. Вы можете объявить функцию, для которой будет использована ваша замена, поместив ее прототип между директивами `#ifndef HAVE_function. Если система имеет нужную функцию, то эта функция, вероятно, будет объявлена в заголовочном файле, который вы должны включить в свою программу, так что вы не должны повторно объявлять ее, во избежание конфликта объявлений.


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

Comments