jekazz
14-03-2005, 17:11
Создал класс, так, для тренеровки.
class string
{
char *data;
int size;
public:
string:string(const char *str="");
string& operator=(string&);
string& operator+=(string&);
string&operator+(string&);
//...................и т.д
~string();
};
Так вот, все работает, работает правильно, когда параметры передаются через стек. Но когда любую из функций или операторов сделать _fastcall начинаются глюки.
Например
string s1("1234");
string s2("5678");
string s3("abcd");
s1+=s2; //должно быть s1 = "12345678", а получается s2 = "56781234"
или еще круче:
s2+=s3;
s2=s1; //после этого s3 = "";
То же самое с функциями и с операторами, принимающими параметры int, const char*. В чем дело??? Без _fastcall все работает правильно!!!
class string
{
char *data;
int size;
public:
string:string(const char *str="");
string& operator=(string&);
string& operator+=(string&);
string&operator+(string&);
//...................и т.д
~string();
};
Так вот, все работает, работает правильно, когда параметры передаются через стек. Но когда любую из функций или операторов сделать _fastcall начинаются глюки.
Например
string s1("1234");
string s2("5678");
string s3("abcd");
s1+=s2; //должно быть s1 = "12345678", а получается s2 = "56781234"
или еще круче:
s2+=s3;
s2=s1; //после этого s3 = "";
То же самое с функциями и с операторами, принимающими параметры int, const char*. В чем дело??? Без _fastcall все работает правильно!!!