The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Перенесение кода с Visual C++ на g++"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Перенесение кода с Visual C++ на g++"
Сообщение от rarelangua.fm emailИскать по авторуВ закладки on 17-Авг-04, 23:57  (MSK)
Всем привет,

Я пишу cross-платформенное (консольное) приложение и столкнулся со следующей проблемой, мой код идеально компилируется в Visual C++ но g++ мне выдает ошибку (вернее их куча, но они идентичные нижеприведенной)
Никаких проблем с непереносимыми функциями у меня нет (все идеально совместимо как с Windows так и с UNIX), но есть куча условностей и разностей в синтаксисе казалось бы стандартизированного С++

Код у меня примерно следующий (он довольно комплексный но пример исчерпывающий)

#define TRY try{
#define CATCH(X) }catch(...){errorstr+="called in - ";errorstr+=X+string(" ");throw;}
#define BEGINSTAT clock_t beginstattime=::clock();
#define ENDSTAT(X) {unsigned int commontime=::clock()-beginstattime;PowerLog(ARGV_PATH_CGI+"performance.log",X##" execution time",commontime,10,true);}

...(далее еще куча всего)

unsigned int DBManagerObject::GetNewMessageId()
{
TRY
#ifdef PERFORMANCE_STAT
BEGINSTAT
#endif

unsigned int id;
FILE* file=fopen(MESSAGESTABLE.c_str(),"r+b");
fread(&id,sizeof(unsigned int),1,file);
fclose(file);

#ifdef PERFORMANCE_STAT
ENDSTAT("GetNewMessageId")
#endif
return ++id;
CATCH("GetNewMessageId")
}

Подскажите мне пожалуйста что хочет сказать g++ выдавая следующую ошибку,-

db.cpp:139:54: pasting ""DBManagerObject::GetNewMessageId"" and "" execution time"" does not give a valid preprocessing token

Я так понимаю вся проблема в макросе:
define ENDSTAT(X) {unsigned int commontime=::clock()-beginstattime;PowerLog(ARGV_PATH_CGI+"performance.log",X##" execution time",commontime,10,true);}
(где PowerLog просто созданный мною класс, но это неважно)

Заранее огромное спасибо за любую помощь

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Перенесение кода с Visual C++ на g++"
Сообщение от Soldier Искать по авторуВ закладки(??) on 18-Авг-04, 08:17  (MSK)
>Я так понимаю вся проблема в макросе:
>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';
}
// ------------------

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру