Я работаю над проектом, что становится все более сложным. Проект состоит из независимых друг от друга разделов кода, содержащих множество математических вычислений, за которыми следует сложная генерация. Все это обернуто внутри сокета с pthread.Выполнение функции ведет себя как область
Всего это выглядит примерно так:
Main() -> гнездо -> нить -> обработки запроса -> один или несколько независимых секций
Я хотел вложить каждый независимый участок кода внутри функции и для этой функции наследовать переменные от функции вызывающего, но это не сработало.
Ниже упрощенная версия того, что я хочу добиться:
void func_a(){int c;b+=a;c=1;b+=c;}
int main(){
int a,b,c;
a=3;b=2;c=0;
func_a();
printf("b:%d c:%d\n",b,c);
return 1;
}
Приведенный выше код не работает, но это работает отлично, и делает то, что я хочу:
int main(){
int a,b,c;
a=3;b=2;c=0;
{int c;b+=a;c=1;b+=c;}
printf("b:%d c:%d\n",b,c);
return 1;
}
я мог просто поместите код для функции в файл, а затем сделайте {#include ...}, но, возможно, есть лучший способ сделать это?
Любые другие идеи и предложения по управлению такой вещью тоже ценятся.
Спасибо.
P.S.
Использование глобальной области применения не является вариантом из-за потоковой передачи. Просто передача переменных в функцию не является опцией, она будет принимать более 30 аргументов. У меня уже есть куча структуры, поэтому включение всех переменных в одну структуру не является опциональным эфиром.
Если вы не заботитесь о переносимости, вы можете рассмотреть возможность использования поддержки вложенных функций gcc. –
использование GCC локальная функция определять. – BLUEPIXY