Вопрос к C-программистам )
Я начал освоение библиотеки getopt.h которая обрабатывает параметры командной строки. И написал можно так сказать небольшое приложение. которое имеет два блока. Блок в котором содержится код на запуск программы без аргументов, в результате чего программа должна отобразить краткую справку. . и блок который обрабатывает непосредственно указанные аргументы. но в процессе компиляции возникает ошибка .. Быть может подскажете в чем я проштрафился, глядя на код)
#include
#include
#include
/* Блок для запуска программы без агрументов */
const char* program_name; /* Задаем имя программы */
void printResult (FILE* stream, int exit_code) /* Объявляем метод, указатель и потоки
В поток stream заносим отчет об использовании программы
*/
{
fprintf (stream, "Usage: %s options [inputfile ...]\n" , program_name);
fprintf (stream,
-h --help Справка \n"
-o --output файл Запись в файл (Не доступна) \n"
-a --author Об авторе \n");
exit (exit_code);
}
int main( int argc, char* argv[])
{
/* Блок для запуска программы с аргументами */
int options;
const char * const short_options = "ho:a";
const struct option long_options[] =
{
( "help" , 0, NULL , 'h'),
( "output" , 1, NULL , 'o'),
( "author" , 0, NULL , 'a')
( NULL, 0, NULL, 0 )
}
const char* output_filename = NULL;
program_name=argv[0];
do {
options = getopt_long (argc, argv, short_options,long_options,NULL);
switch (options)
{
case 'h' : printResult (stdout,0);
case 'o' : printfResult (stdout,0);
case 'a' : printResult (stdout,0);
case '?' : printResult (stderr,1);
case 1 : break;
default : abort();
}
}