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

Класс в dll - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить количество единиц в 3 числах http://www.cyberforum.ru/cpp-beginners/thread1013470.html
Помогите с такой задачей. Программа просит ввести три целых числа. В каждом из трёх введённых чисел вычисляется количество цифр "один". Число с наибольшим количеством единиц выводит программа.
C++ В чём ошибка? Доброго времени суток! Есть задачка, есть кривое решение. :) Суть задачки такова: найти все простые числа до 1000 и вывести их на экран. :help:Помогите, пожалуйста, новичку, подправьте код :-#include <iostream> using namespace std; int main() { int i,j; for (i=2; i<1000; i++) { http://www.cyberforum.ru/cpp-beginners/thread1013469.html
Динамическая память для структур C++
Доброго времени суток, Уважаемые! Скажу сразу, что я студент пед вуза, программирование у нас было не на самом высоком уровне, но я пытаюсь все пробелы устранить и постоянно практикую в программирование(исследовательская работа в другом вузе заставляет :( ). Сейчас встала одна проблема/задача. Мне поручили написать методичку для школьников, а именно для старших классов. Подразумевается что они...
Вывод предложений, не содержащих запятые C++
Ребят, помогите пожалуйста написать программу, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых. Заранее огромное спасибо)
C++ Написать программу, в которой на основе разработанных функций осуществляется запись в двоичный файл http://www.cyberforum.ru/cpp-beginners/thread1013434.html
Добрый день. Помогите пожалуйста, вроде код правильный, а результата никакого не выводит. В чём ошибка? Вариант 34 Для хранения данных о ноутбуках описать структуру вида, описанного в варианте 30. Написать функцию, которая читает данные о ноутбуках из файла note.txt в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура...
C++ Распечатать в порядке,обратно алфавитному,все буквы,которые входят в текст не менее трех раз Очень надеюсь,что поможете с написанием программы. подробнее

Показать сообщение отдельно
Stason676
Заблокирован
21.11.2013, 10:54     Класс в dll
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
 
//файл Errors.h
 
#ifdef ERRORS_DLL
#define ERRORS_DLL __declspec(dllexport)
#else
#define ERRORS_DLL __declspec(dllimport)
#endif
 
/*Состояние автомата.
STA-начало строки, END-конец строки, OPR-операнд, 
BIO-бинарный знак операции, SQR-квадратный корень,
MIN-минус, LP-левая скобка, RP-правая скобка,
BAD-символ не опознан. state-текущее состояние,
memory-предыдущее состояние.*/
enum State { STA, END, DIG, ALF, BIO, SQR, MIN, LP, RP, BAD};                   
 
class ERRORS_DLL Errors
{
private:
        
    /*state-текущее состояние, prevState-прошлое состояние
    varState-состояние переменной.*/
    State state, prevState, varState;
 
    //true если цифра.
    bool IsDigit(char);
 
    //true если буква.
    bool IsAlpha(char);
 
    //true если оператор бинарный.
    bool IsBinOp(char);
 
    //Парсер
    State Parser(char);
 
public:
 
    //Конструктор.
    Errors();
 
    //Поиск недопустимых последовательностей во входящей строке.
    char* BadChain(char*);
 
    //Исключение если в строке обнаружены ошибки.
    class BadExpression
    {
    public:
        
        char* message;
 
        BadExpression()
        {
            message = "EXCEPTION.Expression is not accepted.";
        }
    };
};
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
//файл Errors.cpp
 
#include "Errors.h"
 
//true если цифра.
bool Errors::IsDigit(char ch)
{
    char table[] = { '0','1','2','3','4','5','6','7','8','9','.','\0' };
 
    for(int i = 0; table[i]; ++i)
        if(ch == table[i])
            return true;
    
    return false;
}
 
//true если буква.
bool Errors::IsAlpha(char ch)
{
    char table[] = 
    {  
        'A','a','B','b','C','c','D','d','E','e','F','f','G','g','H','h','I','i',
        'J','j','K','k','L','l','M','m','N','n','O','o','P','p','Q','q','R','r',
        'S','s','T','t','U','u','V','v','W','w','X','x','Y','y','Z','z','\0'
    };
 
    for(int i = 0; table[i]; ++i)
        if(ch == table[i])
            return true;
 
    return false;
}
 
//true если оператор бинарный.
bool Errors::IsBinOp(char ch)
{
    char table[] = { '*', '/', '+', '\0' };
 
    for(int i = 0; table[i]; ++i)
        if(ch == table[i])
            return true;
 
    return false;
}
 
//Парсер
State Errors::Parser(char ch)
{
    if(IsDigit(ch)) state = DIG;
    else if(IsAlpha(ch)) state = ALF;
    else if(IsBinOp(ch)) state = BIO;
    else if(ch == '^') state = SQR;
    else if(ch == '-') state = MIN;
    else if(ch == '(') state = LP;
    else if(ch == ')') state = RP;
    else if(ch == ';') state = END;
    else state = BAD;
        
    return state;
}
 
//Конструктор.
Errors::Errors()
{
    //Запись в память автомата положение старт.
    prevState = STA;
    varState = STA;
}
 
//Поиск недопустимых последовательностей во входящей строке.
char* Errors::BadChain(char* exp)
{
    //Выражение не должно превышать 256 символов.
    if(strlen(exp) > 255) throw BadExpression();
 
    char* workStr = new char[strlen(exp) + 2];
    strcpy(workStr, exp);
    
    //Замена зарезервированного символа ';' на '@'.
    for(unsigned i = 0; workStr[i]; ++i)
        if(exp[i] == ';')
            exp[i] = '@';
 
    //Вcтавить в конец строки ';' чтобы переключть автомат в стстояние "END".
    workStr[strlen(exp) + 1] = ';';
    workStr[strlen(exp) + 2] = 0;
 
    for (unsigned i = 0; workStr[i]; ++i)
    {
        switch(Parser(workStr[i]))
        {
            case END:
                switch(prevState)
                {
                    case STA: case BIO:
                    case SQR: case MIN:
                    case LP: throw BadExpression();
                }
                break;
            case DIG:
                if(prevState == RP) throw BadExpression();
                if(varState == STA) varState = DIG;
                prevState = DIG;
                break;
            case ALF:
                if(prevState == RP) throw BadExpression();
                if(varState == DIG) throw BadExpression();
                prevState = ALF; varState = ALF;
                break;
            case BIO:
                switch(prevState)
                {
                    case STA: case BIO:
                    case SQR: case MIN:
                    case LP: throw BadExpression();
                }
                prevState = BIO; varState = STA;
                break;
            case SQR:
                switch(prevState)
                {
                    case DIG: case ALF:
                    case BIO: case SQR:
                    case MIN: throw BadExpression();
                }
                prevState = SQR; varState = STA;
                break;
            case MIN:
                switch(prevState)
                {
                    case BIO: case SQR:
                    case MIN: throw BadExpression();
                }
                prevState = MIN; varState = STA;
                break;
            case LP:
                switch(prevState)
                {
                    case DIG: case ALF:
                    case RP: throw BadExpression();
                }
                prevState = LP; varState = STA;
                break;
            case RP:
                switch(prevState)
                {
                    case STA: case BIO:
                    case SQR: case MIN:
                    case LP: throw BadExpression();
                }
                prevState = RP; varState = STA;
                break;
            case BAD: throw BadExpression();
        }
    }
    //char* massege = "Expression accepted";
    return "Expression accepted";
}
Предупреждение 2 warning C4273: Errors::IsAlpha: несовместимая компоновка dll c:\documents and settings\admin\мои документы\visual studio 2010\projects\dll_test\dll_test\errors.cpp 17
Предупреждение 3 warning C4273: Errors::IsBinOp: несовместимая компоновка dll c:\documents and settings\admin\мои документы\visual studio 2010\projects\dll_test\dll_test\errors.cpp 34
Предупреждение 1 warning C4273: Errors::IsDigit: несовместимая компоновка dll c:\documents and settings\admin\мои документы\visual studio 2010\projects\dll_test\dll_test\errors.cpp 5
Предупреждение 4 warning C4273: Errors::Parser: несовместимая компоновка dll c:\documents and settings\admin\мои документы\visual studio 2010\projects\dll_test\dll_test\errors.cpp 46

VS предупреждает как исправить? Спасибо.

Добавлено через 15 часов 30 минут
C++
1
2
3
4
5
#ifdef ERRORS_DLL
#define ERRORS_DLL __declspec(dllexport) //Поменял местами эти
#else
#define ERRORS_DLL __declspec(dllimport) //две строчки и все заработало
#endif
Пожалуйста объясните почему или ссылку на подробное понятное описание. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru