ЛР3. Препроцессор, макрокоманды.

Задания

  1. Определить макросы в виде выражений (использование блоков не предполагается) и проверить их работу:
        testbitM(A,B) 
        возвращает 1, если бит номер B установлен в числе A
        возвращает 0, если бит номер B сброшен в числе A
        возвращает -1, если B находится вне диапазона 0..63
    
        maxM(A,B,C)
        возвращает максимальное из переданных значений
    
        squarenumM(A,B,C)
        возвращает количество корнeй в квадратном уравнении с коэффициентами A,B,C
    
  2. Определить макросы в виде программных блоков и проверить их работу:
        simpleM(A, Result)
        Присваивает 1 переменной Result, если A - простое число
    
        squareM(A,B,C,NUM,X1,X2)
        Решает квадратное уравнение с коэффициентами A,B,C, 
        присваивает переменной NUM количество корней, 
        переменным X1 и X2 - значения корней (при наличии)
    
        rcountM(A,Result)
        Присваивает переменной Result количество букв русского алфавита в строке A (кодировка UTF-8). 
        Каждая русская буква состоит из двух последовательно расположенных символов 
        со следующими кодами: \xD0\x81, \xD0\x90-\xD0\0xBF, \xD1\0x80-\xD1\0x8F, \xD1\0x91
    
  3. Разработать проект из 4 модулей.
        1. 	logs.c - содержит строковую переменную lastcall[100], инициализированную строкой "none" 
        2. 	macros.c - подключает logs.c, содержит макросы testbitM, maxM, squarenumM, созданные ранее. 
    	Дополнительно каждый макрос при вызове присваивает свое имя переменной lastacall (man strcpy).
        3. 	funcs.c - подключает logs.c, содержит функции  testbitF, maxF, squarenumF, 
    	аналогичные соответствующим макросам.
    	Каждая функция при вызове присваивает свое имя переменной lastacall (man strcpy).
    	funcs.h - содержит заголовки функций testbitF, maxF, squarenumF
        4.	test.c - основная программа, подключает macros.c, funcs.h и logc.c. 
    	Проверяет работу всех функций/макросов. После вызова каждой/ого функции/макроса выводит значение
    	переменной lastacall.