C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Дебетовая карта Home Credit [CPS] RU

 Функция main / _Введение / Библиотечн. функции Borland C++

Функция main.

 
      Каждая программа  на  С  и  C++  должна иметь функцию main;
 причем ваше дело,  где вы ее поместите.  Некоторые  программисты
 помещают ее в начале файла, некоторые в конце. Однако независимо
 от ее положения необходимо помнить следующее:

                    Аргументы функции "main".

      Запускающая процедура Borland C++ посылает функции main три
 параметра (аргумента): argc, argv и env.

      - argc,  целое,  -  это  число аргументов командной строки,
        посылаемое функции main,

      - argv это массив указателей на строки (char * []).

        Под  версией  DOS   3.x   и   более   поздними   argv[0]
         определяется как полный маршрут запускаемой программы.

        При работе под более ранними версиями DOS argv указывает
         на нулевую строку ("").

        argv[1] указывает на первую после имени программы строку
         командной строки.

        argv[2] указывает на вторую после имени программы строку
         командной строки.

        argv[argc-1] указывает на последний аргумент, посылаемый
         функции main.

        argv[argc] содержит NULL.

      - env также является массивом указателей на строки.  Каждый
        элемент env[] содержит строку вида ENVVAR=значение.

        ENVVAR - это имя переменной среды, типа PATH или 87.

        <значение> это  значение  данной  переменной  окружения,
         например C:\DOS;C:\TOOLS (для PATH) или YES (для 87).

      Заметим, однако,  что  если вы описываете некоторые из этих
 аргументов,  то вы должны описывать их в  таком  порядке:  argc,
 argv, env. Например, допустимы следующие объявления аргументов:

     main()
     main(int argc)         /* допустимо но не очень хорошо */
     main(int argc, char *argv[])
     main(int argc, char *argv[], char *env[])

      Объявление main(int argc) не очень  удобно  тем,  что  зная
 количество параметров, вы не имеете доступа к ним самим.

      Аргумент env  всегда  доступен  через глобальную переменную
 environ. Смотрите описание переменной  environ  (в  Главе  3)  и
 функции putenv и getenv (в Главе 2).

      Параметры argc  и argv также доступны через переменные_argc
 и _argv.

        Пример программы, использующей argc, argv и env.

      Это пример  программы   ARGS.EXE,   которая   демонстрирует
 простейший  путь  использования  аргументов,  посылаемых функции
 main.

     /* программа ARGS.C */

 #include <stdio.h>
 #include <stdlib.h>

 void main(int argc, char *argv[], char *env[])
 {
 int i;

 printf("Значение argc равно %d \n\n",argc);
 printf("В командной строке содержится %d параметров \n\n",argc);

 for (i=0; i<=argc; i++)
    printf(" argv[%d]: %s\n",i,argv[i]);

 printf("Среда содержит следующие строки:\n");

 for (i=0; env[i] != NULL; i++)
    printf(" env[%d]: %s\n",i,env[i]);

 return 0;
 }

      Предположим, что   вы   запускаете  программу  ARGS.EXE  со
 следующей командной строкой:

 C:> args first_arg "arg with blanks" 3 4 "last but one" stop!

      Заметим, что  вы  можете  послать  аргумент  с   пробелами,
 заключив   его  в  двойные  кавычки,  как  показано  на  примере
 "argument with  blanks"  и  "last  but  one"  в  примере  вызова
 программы.

      В результате   работы   программы   вы   получите  примерно
 следующее:

     Значение argc равно 7

     В командной строке содержится 7 параметров

        argv[0]: c:\turboc\testargs.exe
        argv[1]: first_arg
        argv[2]: arg with blank
        argv[3]: 3
        argv[4]: 4
        argv[5]: last but one
        argv[6]: stop!

     Среда содержит следующие строки:

        env[0]: COMSPEC=C:\COMMAND.COM
        env[1]: PROMPT=$p $g
        env[2]: PATH=C:\SPRINT;C:\DOS;C:\BC

      Максимальная общая  длина  командной   строки,   посылаемая
 функции  main (включая пробелы и имя самой программы),  не может
 превышать 128 символов; это ограничения DOS.

             Символы маскирования в командной строке

      Аргументы командной   строки   могут   содержать    символы
 маскирования.  При  этом  они  могут  расширяться  для всех имен
 файлов,  которые совпадают с аргументом так,  как это  делается,
 например,  с  командой  DOS  copy.  Для  использования  символов
 маскирования   необходимо   при   связывании   вашей   программы
 редактором    связей   подсоединить   к   ней   объектный   файл
 WILDARGS.OBJ, который поставляется с Borland C++.

      Если файл WILDARGS.OBJ подсоединен к вашей программе, то вы
 можете в командной строке использовать аргументы типа "*.*". При
 этом имена всех файлов,  подходящих к данной маске,  заносятся в
 массив argv.  Максимальный размер массива argv зависит только от
 объема динамической области памяти.

      Если под данную маску  не  нашлось  подходящих  файлов,  то
 аргумент  передается  в  том  виде,  в  каком  он  был  набран в
 командной  строке.  (Т.е.  функции   main   передается   строка,
 содержащая символы маскирования).

      Аргументы, заключенные   в   двойные  кавычки  ("..."),  не
 расширяются.

      Пример. Следующие  команды  компилируют   файл   ARGS.C   и
 связывают   его   с  модулем  WILDARGS.OBJ,  а  затем  запускают
 получившуюся программу ARGS.EXE:

     bcc args wildarg.obj

     args C:\BORLANDC\INCLUDE\*.H  "*.C"

      При запуске ARGS.EXE первый аргумент  расширяется  до  имен
 всех файлов  с  расширением  H в директории Borland C++ INCLUDE.
 Отметим,  что все строки  включают  полный  маршрут  (к  примеру
 C:\TC\INCLUDE\ALLOC.H).  Аргумент  *.C не расширяется,  т.к.  он
 заключен в кавычки.

      Если вы работаете в Интегрированном Окружении (BC.EXE),  то
 вам  просто  нужно  указать  в  меню  проекта имя файла проекта,
 который должен содержать следующие строки:

     ARGS
     WILDARGS.OBJ

      Затем с  помощью  команд "Run/Arguments" следует установить
 параметры командной строки.

      Замечание. Если  вы  хотите,   чтобы   обработка   символов
 маскирования   происходила   всегда,   т.е.  чтобы  WILDARGS.OBJ
 автоматически  подсоединялся  редактором   связей,   вы   должны
 модифицировать вашу стандартную библиотеку C?.LIB, добавив в нее
 файл WILDARGS.OBJ.  Для этого удалите из  библиотеки  SETARGV  и
 добавьте WILDARGS.  Это можно сделать с помощью следующих команд
 (мы подразумеваем,  что стандартные  библиотеки  и  WILDARGS.OBJ
 содержатся в текущей директории):

      TLIB описана в главе 7 "Утилиты" документа "User's Guide".
                                                     
      tlib cs -setargv +wildargs
      tlib cc -setargv +wildargs
      tlib cm -setargv +wildargs
      tlib cl -setargv +wildargs
      tlib ch -setargv +wildargs


   Компиляция с использованием ключа  -p  (Соглашение  по  вызову
                         языка Паскаль).

      Если вы  компилируете вашу программу,  используя соглашение
 по вызову языка Паскаль (детально описано в главе 9 "Interfacing
 with   assembly  languige",  "Programmer's  Guide"),  вы  должны
 помнить, что функция main должна быть явно объявлена как функция
 С. Это  можно  сделать  с помощью ключевого слова cdecl примерно
 так:
 
     cdecl main(int argc, char *argv[], char *env[])

              Значение, возвращаемое функцией main.

      Функция main возвращает значение,  которое  является  кодом
 завершения программы: это целое. Однако, если ваша программа для
 завершения использует функцию exit (или _exit),  то возвращаемым
 значением будет аргумент этой функции.

      Например, если ваша программа содержит вызов:

      exit(1)

      то код завершения будет равен 1.

      Если для  запуска  программы вы используете интегрированное
 окружение  Borland  C++  (BC.EXE),  то  посмотреть  возвращаемое
 значение функции main вы можете, выбрав "File | Get Info".
      





Дебетовая карта Home Credit [CPS] RU