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

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

Восстановить пароль Регистрация
 
Jeremen1
 Аватар для Jeremen1
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 58
17.02.2013, 22:12     undefined reference хотя всё дефайнед #1
Всем доброго времени суток. В С++ я новичёк, помогите пожалуйста разобраться в чём проблема.
Есть файл 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*)'
Вложения
Тип файла: rar lab3.rar (2.9 Кб, 4 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 22:12     undefined reference хотя всё дефайнед
Посмотрите здесь:

C++ undefined reference...
C++ Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
C++ undefined reference
C++ undefined reference
C++ undefined reference to `A::a'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
17.02.2013, 22:19     undefined reference хотя всё дефайнед #2
у тебя в прототипе parse_exp(char str[], float *operand1, float *operand2, char *operation);
а в обьявлении parse_exp(char* str[], float* operand1, float* operand2, char* operation)
Jeremen1
 Аватар для Jeremen1
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 58
17.02.2013, 22:47  [ТС]     undefined reference хотя всё дефайнед #3
coloc, спасибо исправил. Но ничего не изменилось.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
17.02.2013, 22:49     undefined reference хотя всё дефайнед #4
Какие ошибки?
Jeremen1
 Аватар для Jeremen1
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 58
17.02.2013, 22:56  [ТС]     undefined reference хотя всё дефайнед #5
Всё нашел в чём дело. Изменил char expression[50] = "5+12" на char* expression[50] = {"5+12"}
И заработало. Только к сожалению не так как хотелось. Не могилы бы вы пожалуйста посмотреть функцию parse_exp. Почему она не корректно работает, там происходит только 1 итерация цикла. Думаю смысл функции ясен. Но если кратко то есть строка нужно получить с неё 2 операнда и оператор между ними.
Yandex
Объявления
17.02.2013, 22:56     undefined reference хотя всё дефайнед
Ответ Создать тему
Опции темы

Текущее время: 13:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru