Как правильно создать функцию используя макрос - C (СИ)
Формулировка задачи:
Привет.
Как правильно сделать функцию вида float function(float i){ return (i);} через макрос?
Решение задачи: «Как правильно создать функцию используя макрос»
textual
Листинг программы
#define YourFunction(x) x##Function()
#define YourFunctionTwo(x) ThreeFunction(x)
int OneFunction(void)
{
...
}
void TwoFunction(void)
{
...
}
float ThreeFunction(int a)
{
...
}
int main(void)
{
int abc = 5;
YourFunction(One); // OneFunction();
YourFunction(Two); // TwoFunction();
YourFunctionTwo(abc); // ThreeFunction(abc);
return 0;
}
Объяснение кода листинга программы
- В данном коде макрос
YourFunctionиYourFunctionTwoиспользуются для вызова функций с определенными именами из главного цикла программы. - Функция
OneFunctionимеет тип возвращаемого значенияint, но в данном случае она ничего не возвращает, поэтому ее можно считать пустой. - Функция
TwoFunctionтакже является пустой, но имеет типvoid, что означает, что она не возвращает значение. - Функция
ThreeFunctionпринимает целочисленный аргумент и возвращает значение типаfloat. - В функции
mainопределена переменнаяabcсо значением 5. - Вызов
YourFunction(One)эквивалентен вызовуOneFunction();, то есть функцияOneFunctionбудет вызвана. - Вызов
YourFunction(Two)эквивалентен вызовуTwoFunction();, то есть функцияTwoFunctionбудет вызвана. - Вызов
YourFunctionTwo(abc)эквивалентен вызовуThreeFunction(abc);, то есть функцияThreeFunctionбудет вызвана с аргументомabc. - В конце функции
mainвозвращается значение 0, что означает успешное выполнение программы.