- Определить макросы в виде выражений (использование блоков не предполагается) и проверить их работу:
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
- Определить макросы в виде программных блоков и проверить их работу:
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
- Разработать проект из 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.