Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Jeremen1
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 58
#1

undefined reference хотя всё дефайнед - C++

17.02.2013, 22:12. Просмотров 369. Ответов 4
Метки нет (Все метки)

Всем доброго времени суток. В С++ я новичёк, помогите пожалуйста разобраться в чём проблема.
Есть файл functions.h
Вот его содержимое
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
#ifndef FUNCTION_H
#define FUNCTION_H
 
void parse_exp(char str[], float *operand1, float *operand2, char *operation);
float calculate(int operand1, int operand2, char operation);
 
#endif // FUNCTION_H

Также есть файлы functions.cpp и main.cpp
functions.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <string.h>
#include "functions.h"
 
#define MAX_LENGTH 50
 
void parse_exp(char* str[], float* operand1, float* operand2, char* operation) {
    int i = 0;
    char op1[MAX_LENGTH] = "";
    char op2[MAX_LENGTH] = "";
    int op_pos = -1;
 
    while (str[i] != NULL) {
        if (strcmp(str[i], "+") == 0 || strcmp(str[i], "-") == 0 || strcmp(str[i], "*") == 0 || strcmp(str[i], "/") == 0) {
            operation = str[i];
            op_pos = i;
        }
        if (op_pos == -1) {
            strcat(op1, str[i]);
        } else if (op_pos != -1) {
            strcat(op2, str[i]);
        }
        i++;
    }
    operand1 = reinterpret_cast<float*>(op1);
    operand2 = reinterpret_cast<float*>(op2);
}

main.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include "functions.h"
 
using namespace std;
 
int main(int argc, char *argv[])
{
    char expression[50] = "5+12";
    float* operand1;
    float* operand2;
    char* operation;
 
    parse_exp(expression, operand1, operand2, operation);
 
    return 0;
}

В итоге при компиляции получаю следующее.
undefined reference to `parse_exp(char*, float*, float*, char*)'
0
Вложения
Тип файла: rar lab3.rar (2.9 Кб, 4 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 22:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос undefined reference хотя всё дефайнед (C++):

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status - C++
Здравствуйте. Вот недавно начал изучать книгу &quot;С++ для чайников&quot; Стефан Р. Девис 4-е издание. И напоролся на кучу ошибок) Но смог все...

undefined reference - C++
Пытаюсь разобраться с Box2D. Выпадает куча ошибок типа undefined reference to `b2World::b2World(b2Vec2 const&amp;)'| Box2D.h файл...

undefined reference to `A::a' - C++
//==========================================================================================================================================...

Undefined reference to - C++
Помогите, пожалуйста. Нужно было написать программу с использованием шаблона. Появляется ошибка &quot;undefined reference to...

undefined reference - C++
Доброго времени суток! Есть следующий код: #include &lt;iostream&gt; using namespace std; enum direction {Up, Down, Left, Right}; ...

Undefined reference to - C++
Много уже тем создано по даннму вопросу, но решения так и не нашел.. Есть конечно догадки, но как реализовать все равно не знаю. Прошу...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
17.02.2013, 22:19 #2
у тебя в прототипе parse_exp(char str[], float *operand1, float *operand2, char *operation);
а в обьявлении parse_exp(char* str[], float* operand1, float* operand2, char* operation)
1
Jeremen1
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 58
17.02.2013, 22:47  [ТС] #3
coloc, спасибо исправил. Но ничего не изменилось.
0
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
17.02.2013, 22:49 #4
Какие ошибки?
0
Jeremen1
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 58
17.02.2013, 22:56  [ТС] #5
Всё нашел в чём дело. Изменил char expression[50] = "5+12" на char* expression[50] = {"5+12"}
И заработало. Только к сожалению не так как хотелось. Не могилы бы вы пожалуйста посмотреть функцию parse_exp. Почему она не корректно работает, там происходит только 1 итерация цикла. Думаю смысл функции ясен. Но если кратко то есть строка нужно получить с неё 2 операнда и оператор между ними.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 22:56
Привет! Вот еще темы с ответами:

undefined reference to - C++
http://www.cyberforum.ru/qt/thread861722.html Не в том разделе создал тему, и поэтому даю линк на неё. Описание ошибки там же

Undefined reference to - C++
Есть класс NavyPort. Его заголовок: #ifndef NAVYPORT_H #define NAVYPORT_H class NavyPort { public: NavyPort(bool...

Undefined reference to - C++
Matrix.h #pragma once #include &lt;iostream&gt; template &lt;typename T&gt; class Matrix { private: int n1, n2; T **mas; public:...

undefined reference... - C++
Добрый день.На C перешел совсем недавно,поэтому могу не знать всех тонкостей.Подскажите,в какую сторону копать для исправления следующей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.02.2013, 22:56
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru