Pomoč pri #define

Vse o programiranju na in za PC

Moderatorji: Kroko, tilz0R

Pomoč pri #define

OdgovorNapisal/-a Kroko » 26 Sep 2016, 13:07

#define VERSION_MAIN 3001
#define VERSION_YEAR 16
#define VERSION_MONTH 9
#define VERSION_DAY 26
#define VERSION_BUILD 1

Kako iz zgornjih #define narediti ekvivalent temu:
#define FILEVERSION 3001,16,926,1
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4773
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 680 krat
Prejel zahvalo: 1652 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Pomoč pri #define

OdgovorNapisal/-a gumby » 26 Sep 2016, 13:13

Bi rad z enim #define dobil vse ostale ali obratno?
my brain hurts
Uporabniški avatar
gumby
 
Prispevkov: 2573
Pridružen: 14 Jan 2015, 19:49
Kraj: Lendava
Zahvalil se je: 108 krat
Prejel zahvalo: 604 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 63

Re: Pomoč pri #define

OdgovorNapisal/-a Kroko » 26 Sep 2016, 13:16

Obratno. Imam 5 definov, rad bi dobil tistega z vejicami.
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4773
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 680 krat
Prejel zahvalo: 1652 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Pomoč pri #define

OdgovorNapisal/-a S53DZ » 26 Sep 2016, 13:23

"just joking"
#define FILEVERSION VERSION_MAIN, VERSION_YEAR, VERSION_MONTH, VERSION_DAY, VERSION_BUILD
sicer pa
#define FILEVERSION (a,b,c,...)
Uporabniški avatar
S53DZ
 
Prispevkov: 1164
Pridružen: 18 Jan 2015, 10:58
Kraj: Ljubljana
Zahvalil se je: 204 krat
Prejel zahvalo: 392 krat
Uporabnika povabil: S52O
Število neizkoriščenih povabil: 42

Re: Pomoč pri #define

OdgovorNapisal/-a Kroko » 26 Sep 2016, 13:33

Problem je v tistem 926. Normalno bi to naredil kot:
100*VERSION_MONTH + VERSION_DAY
vendar v temu primeru to ne pride v poštev.
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4773
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 680 krat
Prejel zahvalo: 1652 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Pomoč pri #define

OdgovorNapisal/-a S53DZ » 26 Sep 2016, 13:46

Najbrž še vedno ne razumem, kaj želiš, ampak, če daš to v oklepaj, dela.
#define FILEVERSION VERSION_MAIN, VERSION_YEAR, (100*VERSION_MONTH+VERSION_DAY), VERSION_BUILD
Uporabniški avatar
S53DZ
 
Prispevkov: 1164
Pridružen: 18 Jan 2015, 10:58
Kraj: Ljubljana
Zahvalil se je: 204 krat
Prejel zahvalo: 392 krat
Uporabnika povabil: S52O
Število neizkoriščenih povabil: 42

Re: Pomoč pri #define

OdgovorNapisal/-a peterp » 26 Sep 2016, 14:11

A FILEVERSION so torej 4 številčne vrednosti?
peterp
 
Prispevkov: 657
Pridružen: 23 Feb 2015, 14:52
Kraj: Maribor
Zahvalil se je: 164 krat
Prejel zahvalo: 112 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 114

Re: Pomoč pri #define

OdgovorNapisal/-a Kroko » 26 Sep 2016, 14:13

Prevede že, ni pa pravilno.

#define FILEVERSION VERSION_MAIN, VERSION_YEAR, (100*VERSION_MONTH+VERSION_DAY), VERSION_BUILD
vrne 3001,16,126,1

#define FILEVERSION VERSION_MAIN, VERSION_YEAR, (VERSION_MONTH*100+VERSION_DAY), VERSION_BUILD
vrne 3001,16,35,1
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4773
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 680 krat
Prejel zahvalo: 1652 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Pomoč pri #define

OdgovorNapisal/-a Kroko » 26 Sep 2016, 14:14

Ja, to so 4 številčne vrednosti.

Gre se za tole:
https://msdn.microsoft.com/en-us/librar ... 58(v=vs.85).aspx
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4773
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 680 krat
Prejel zahvalo: 1652 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Pomoč pri #define

OdgovorNapisal/-a peterp » 26 Sep 2016, 14:17

Linka ne gre odpreti ampak to je ena možnost. Nisem pa prepričan ali to sploh želiš, ker ne razumem problema. Daj en primer uporabe.
Tale CAT zna biti marsikdaj uporaben :)

Koda: Izberi vse
#define CAT(a, b) XCAT(a, b)
#define STR(a) XSTR(a)
#define XCAT(a, b) a##b
#define XSTR(a) #a

#define VERSION_MAIN 3001
#define VERSION_YEAR 16
#define VERSION_MONTH 9
#define VERSION_DAY 26
#define VERSION_BUILD 1

#define FILEVERSION VERSION_MAIN, VERSION_YEAR, CAT(VERSION_MONTH,VERSION_DAY), VERSION_BUILD
#define FILEVERSION_STR STR(VERSION_MAIN) "," STR(VERSION_YEAR) "," STR(CAT(VERSION_MONTH,VERSION_DAY)) "," STR(VERSION_BUILD)

Pa še v obliki stringa.

Aha, za resource file gre ;)
peterp
 
Prispevkov: 657
Pridružen: 23 Feb 2015, 14:52
Kraj: Maribor
Zahvalil se je: 164 krat
Prejel zahvalo: 112 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 114

Re: Pomoč pri #define

OdgovorNapisal/-a Kroko » 26 Sep 2016, 14:36

Rešeno. kombinacija odgovorov S53DZ in peterp je delovala.

Se pravi, v .rc dataoki je:
FILEVERSION VERSION

v ver.h datoteki pa:
#define CAT_(a, b) a##b
#define CAT(a, b) CAT_(a, b)
#define VERSION VERSION_MAIN, VERSION_YEAR, CAT(VERSION_MONTH, VERSION_DAY), VERSION_BUILD
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4773
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 680 krat
Prejel zahvalo: 1652 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255


Vrni se na Programski jeziki

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost

cron