Avatar billede rrm Nybegynder
24. februar 2007 - 13:24 Der er 8 kommentarer og
1 løsning

Problem med #define i release mode

Jeg har noget kode der vriker fint i debug mode, men når jeg skifter til release mode så kommer kompiler fejl.

Jeg laver nogle ifdef/else for at kunne håndterer noget logging...

#ifdef _DEBUG
#define GET_CL_NAME(name) string getClassName() { string
#else
#define GET_CL_NAME(name)
#endif

og denne kaldes ved:

43: GET_CL_NAME("sock_func");

Men i release mode giver kompileren følgende fejl:

(43) : error C2059: syntax error : 'string'
(43) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
(43) : warning C4183: 'GET_CL_NAME': missing return type; assumed to be a member function returning 'int'

Hvad gør jeg galt??? _DEBUG er ikke defineret i release mode
Avatar billede arne_v Ekspert
24. februar 2007 - 16:08 #1
Maa vi se lidt mere kontekst ?

Jeg kan ikke faa fejl paa den linie som eneste linie.
Avatar billede rrm Nybegynder
26. februar 2007 - 17:49 #2
funktionen er en del af klasse:

class NetSocket {
private:
  GET_CL_NAME("sock_func");
};

og makroen er givet ved:
#ifdef _DEBUG
#define GET_CL_NAME(name) string getClassName() { string n = name; return n; }
#else
#define GET_CL_NAME(name)
#endif
Avatar billede rrm Nybegynder
26. februar 2007 - 18:03 #3
Arrrgggggg........

Selvfølgelig vil det ikke virke når makronerne er inkluderet med følgende:
#if defined(_DEBUG)
    #include "debug\logging.h"
#endif
Avatar billede rrm Nybegynder
26. februar 2007 - 18:04 #4
makronerne=makroerne
Avatar billede rrm Nybegynder
26. februar 2007 - 18:11 #5
er der dog stødt på et andet problem. I debug udgave kan jeg godt bruge følgende:

char programPath[MAX_PATH];
GetModuleFileName(NULL, programPath, sizeof(programPath));

i relase udgave brokker den sig over:
'GetModuleFileNameW' : cannot convert parameter 2 from 'char [260]' to 'LPWCH'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

Hvad er den nemmeste måde at ordne dette på??
Avatar billede rrm Nybegynder
26. februar 2007 - 18:13 #6
skal siges at jeg bruger vs2005
Avatar billede arne_v Ekspert
26. februar 2007 - 18:39 #7
wchar_t programPath[MAX_PATH];

maaske
Avatar billede rrm Nybegynder
26. februar 2007 - 23:11 #8
ok, tak for hjælpen... Det viste sig at jeg havde glemt at fortælle vs at den ikke skulle bygge unicode udgave af release udgaven... :(

Men lig et svar som tak for hjælpen
Avatar billede arne_v Ekspert
06. maj 2007 - 22:50 #9
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester