Difference between revisions of "Libchecker:Заголовочные файлы"

From EjudgeWiki
(checkutils.h)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Проверяющие программы]]/[[libchecker]]/[[Libchecker:Заголовочные файлы|Заголовочные файлы]]
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Проверяющие программы]]/[[libchecker]]/[[Libchecker:Заголовочные файлы|Заголовочные файлы]]
 +
 +
=== <tt>checker.h</tt> ===
  
 
Для использования библиотеки в тексте проверяющей программы необходимо подключить заголовочный файл checker.h.
 
Для использования библиотеки в тексте проверяющей программы необходимо подключить заголовочный файл checker.h.
Line 35: Line 37:
 
  #include <fcntl.h>
 
  #include <fcntl.h>
 
  #include <dirent.h>
 
  #include <dirent.h>
 +
 +
=== <tt>checkutils.h</tt> ===
 +
 +
Заголовочный файл <tt>checkutils.h</tt> предназначен для использования в программах, которые используют отдельные функции библиотеки libchecker, но не укладываются в шаблон проверяющих программ. Например, <tt>checkutils.h</tt> может использоваться для написания проверяющих программ для тестов.
 +
 +
Программа, использующая <tt>checkutils.h</tt> должна сама определять функцию <tt>main</tt>, в которой самостоятельно выполнять инициализацию необходимых переменных библиотеки libchecker.
 +
 +
Пример программы, использующей файл <tt>checkutils.h</tt> приведен [[Подготовка_задачи_tests|здесь]].

Latest revision as of 06:18, 4 July 2010

Навигация: Главная страница/Система ejudge/Проверяющие программы/libchecker/Заголовочные файлы

checker.h

Для использования библиотеки в тексте проверяющей программы необходимо подключить заголовочный файл checker.h. Перед директивой #include должно находиться определение макроса NEED_CORR, и могут находится определения макросов NEED_INFO и NEED_TGZ.

Макрос NEED_CORR должен быть определен в 1, если проверяющая программа использует файл с эталонным ответом. В секции описания задачи соответствующей задачи должна быть установлена конфигурационная переменная use_corr. Если файл с эталонным ответом не требуется, макрос NEED_CORR должен быть определен в 0.

Макрос NEED_INFO должен быть определен в 1, если проверяющая программа использует файл с дополнительной информацией о тесте. В секции описания задачи соответствующей задачи должна быть установлена конфигурационная переменная use_info. Если файл с дополнительной информацией о тесте не требуется, макрос NEED_INFO может быть неопределен или определен в 0.

Макрос NEED_TGZ должен быть определен в 1, если проверяющая программа использует специально подготовленный рабочий каталог для тестируемой программы. В секции описания задачи соответствующей задачи должна быть установлена конфигурационная переменная use_tgz. Если специально подготовленный рабочий каталог не используется, макрос NEED_TGZ может быть неопределен или определен в 0.

Таким образом, заголовок тестирующей программы может выглядеть примерно так:

#define NEED_CORR 1
#define NEED_INFO 1
#define NEED_TGZ  0 // это определение может быть опущено
#include "checker.h"

Заголовочный файл checker.h включает следующие стандартные заголовочные файлы:

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <ctype.h>
#include <math.h>

Поэтому нет необходимости включать их явно в проверяющей программе.

Если включён режим NEED_TGZ, дополнительно включаются следующие заголовочные файлы:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dirent.h>

checkutils.h

Заголовочный файл checkutils.h предназначен для использования в программах, которые используют отдельные функции библиотеки libchecker, но не укладываются в шаблон проверяющих программ. Например, checkutils.h может использоваться для написания проверяющих программ для тестов.

Программа, использующая checkutils.h должна сама определять функцию main, в которой самостоятельно выполнять инициализацию необходимых переменных библиотеки libchecker.

Пример программы, использующей файл checkutils.h приведен здесь.