я сделать мой вопрос коротко и просто:Петля для имен функций
У меня есть ряд функций, называемых f1, f2, f3 и т.д., и теперь я хочу, чтобы петли через них, а не вводить их один за другим. Есть ли способ сделать это? Это практика программирования c.
я сделать мой вопрос коротко и просто:Петля для имен функций
У меня есть ряд функций, называемых f1, f2, f3 и т.д., и теперь я хочу, чтобы петли через них, а не вводить их один за другим. Есть ли способ сделать это? Это практика программирования c.
Отражение не работает на C, насколько я знаю, поэтому вы не можете динамически преобразовывать строки в вызовы функций, используя их имена.
Однако вы можете использовать указатели функций для этого.
#include <stdio.h>
int f1()
{
printf("f1() \n");
return 0;
}
int f2()
{
printf("f2() \n");
return 0;
}
int f3()
{
printf("f3() \n");
return 0;
}
int main(int argc, char *argv[])
{
int (*p[3])() = {
f1,
f2,
f3
};
for (int i=0; i<3; i++) {
(*p[i])();
}
return 0;
}
Это полезно, но имена функций даются в другом c-файле, поэтому я не могу переопределить их. – user1773037
Вы всегда можете включить этот файл. Вам не нужно переопределять их. – Sorter
Вы не переопределяете их, просто указывая на них по адресу. –
Если вы ищете функцию, чтобы преобразовать имя функции строку адреса, попробуйте dlsym()
Сделали вы единственный попробовать написать код для этого? Сделали ли вы какие-либо исследования. Если да, напишите свой код. иначе это не место для этого вопроса. – Gangadhar