вычислениям в калькуляторе.
                  
                  
                  
                  
                  
                  переделал стек под такую структуру
                  
                  
                  
                  
                  
                  typedef struct stack {
                  
                  
                    enum type type;
                  
                  
                    union var value;
                  
                  
                    struct stack *prev;
                  
                  
                  } stack;
                  
                  
                  
                  
                  
                  enum type {
                  
                  
                    sign = 1,
                  
                  
                    dig = 0,
                  
                  
                  };
                  
                  
                  
                  
                  
                  union var {
                  
                  
                    int sign;
                  
                  
                    double digit;
                  
                  
                  };
                  
                  
                  
                  
                  
                  грубо говоря один стек где будут хранится знаки(+ - cos asin mod log и тд) в интовом значении
                  
                  
                  
                  
                  
                  и там же будут храниться числа в даблах
                  
                  
                  
                  
                  
                  делаю функцию push(int/double value, stack** out)
                  
                  
                  
                  
                  
                  возможно ли реализовать как то таким образом, чтобы в функцию можно было подать и инт и дабл, и в зависимости от типа данных функция записывала значения в нужный union и выставляла правильный enum?
                  
                  
                
Ну тут 2 путя, либо _Generic, либо обёртка, принимающая void * и указатель на функцию обработки, но в любом случае придётся написать 2 функции Хотя можно макросом нагенерить их.
Зачем все так усложнять
 Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  есть почитать чего на эту тему?
гугл: _Generic си Либо стандарт 11 посмотри
 Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  а как можно проще? я пришел к тому что деверсифецирую. сначала перевожу в обратную польскую запись, потом считаю. можно конечно просто выходную строку перед вычислениями делать не списком а массивом чаров, потом еще раз перепарсить и сосчитать. но чото совсем зашкварно будет )
А переводить одну запись в другую не зашкварно? Почему бы сразу тогда в обратной польской записи не писать?
 Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  ну человек же обычный записывает запись на подсчет в обычной инфексной записи ) когда пользуется кулькулятором
Какой человек? Емаксеров вполне устраивает польская запись
 Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  спасибо, изучаю 🤙
 Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  ну задание такое ) сам бы я в жись для себя таким не занимался.
Проще всего сделать лексер, который будет выдавать токены, которые потом отдадутся парсеру, впоследствии получится дерево, проходя по его ветвям можно легко вычислять значения
 Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  чот сложно написано, пока что скила не хватит на такое )
Да просто сделай обработку по принципу компиля, да и всё
Только транслятора, а не компилятора
 Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  если я все правильно понял, то логика следующая объявляю генерик на инт и дабл перед функциями когда только приходит value некое делаю проверку генериком что там инт или дабл и потом делаю ветвление на 2 функции push_Int() и push_Double() так? или как мне сделать так, чтобы в аргумент функции поступало некое value(int или дабл)?
Нет, вместо своих строчек подставляешь сами вызовы функций
 Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                   Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                   
                      
                      
                    то что стоит под Y могу прописать уже внутри функции где буду вызывать что угодно да? а то я уже начал делать, думал это тоже в дефайне обязательно прописывать
Не понял вопроса
 Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Andrey
                          Andrey
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  а, да я чот затупил. щас разобрался.
 
                      
                      
                    подсветка синтаксиса топ
А зачем нужна перегрузка, когда еще столько свободных имён ?
Обсуждают сегодня