>Я так понимаю вся проблема в макросе:
>define ENDSTAT(X) {unsigned int commontime=::clock()-beginstattime;PowerLog(ARGV_PATH_CGI+"performance.log",X##" execution time",commontime,10,true);}
>(где PowerLog просто созданный мною класс, но это неважно)
>
На основе вашего кода, я набросал тестовую прогу - все нормально
откомпилилось (gcc-2.95):
//------- atest.cpp --------
#include <time.h>
#include <stdio.h>
#include <string>
string errorstr;
string ARGV_PATH_CGI = "/tmp/";
#define PERFORMANCE_STAT
#define TRY try{
#define CATCH(X) }catch(...){errorstr+="called in - ";errorstr+=X+string(" ");throw;}
#define BEGINSTAT time_t beginstattime=time(NULL);
#define ENDSTAT(X) {unsigned int commontime=time(NULL)-beginstattime;PowerLog(ARGV_PATH_CGI+"performance.log",X##" execution time",commontime,10,true);}
class PowerLog {
public:
PowerLog(string s1, char *s2, int c, int c2, bool c3) {
cout << s1 << s2 << c << c2 << c3 << '\n';
}
};
class DBManagerObject {
public:
DBManagerObject() {;}
unsigned int GetNewMessageId();
};
unsigned int DBManagerObject::GetNewMessageId()
{
TRY
#ifdef PERFORMANCE_STAT
BEGINSTAT
#endif
unsigned int id;
id=100;
#ifdef PERFORMANCE_STAT
ENDSTAT("GetNewMessageId")
#endif
return ++id;
CATCH("GetNewMessageId");
}
main() {
DBManagerObject dbmo;
cout << "id=" << dbmo.GetNewMessageId() << '\n';
}
// ------------------