QL.túra

Kulturális smörgåsbord Esterházytól Wass Albertig, a gumicsizmától az iPad-ig, a Teletabiktól Sexpírig, a makrofágtól a mikrokontrollerig, miazmás...

Címkék

2000 (20) 2001 (6) 2002 (16) 2003 (164) 2004 (61) 2005 (40) 2006 (31) 2007 (28) 2008 (33) 2009 (175) 2010 (188) 2011 (201) 2012 (86) 2013 (40) 2014 (36) 2015 (26) 2016 (10) adáshiba (91) android (1) animáció (93) cygwin (3) film (410) gezarol (13) hájtek (159) hangoskönyv (32) ipad (17) klip (12) könyv (191) linux (29) színház (169) vers (17) windows (37) zene (111) Címkefelhő

+jegyzések

Most ...

... múlok .osan

bmi_tiny.png


... hallgatom
Szabó Magda: Régimódi történet
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSqTmZEqlCRFgojyt52Q2n_qiMTyVlt-zJu-DpbNKVY6OQbBh4u


... olvasom
Alexander Steele (szerk.): Kezdő írók kézikönyve


... (Kik ezek? Kik ezek az embek? Kik ezek?)
profile for TrueY on Stack Exchange, a network of free, community-driven Q&A sites
free counters

[Hájtek] Visual Studio trükkök

2010.04.17. 07:00 | TrueY | Szólj hozzá!

Címkék: 2010 hájtek

Néhány esetben nem tudtam használni a gcc-ben bevált dolgokat VS alatt. Ezek többségét kicsit másként lehet használni.

  1. Az első probléma a változó paraméterlistájú makrókkal volt. Írtam egy log-oló függvényt. Ennek az első két paramétere két wchar_t (első a függvény nevét tartalmazó string, a második a format string). Után jönnek a kiírandó argumentumok. Így hívom meg log(__FUNCTIONW__, L"Start: value=%d", value);
    vagy
    log(__FUNCTIONW__, L"Source file: %s, Dest file: %s", source, dest);

    A log-on belül vswprintf-et használok. Érdekes, hogy a "%s" használható a wchar_t argumentumok kiírására. Hmmm...
    #include <stdarg.h>

    void log( const wchar_t *funcname, const wchar_t *fmt, ... )

        wchar_t str[2048];
        va_list p;
     
        va_start(p, fmt);
        vswprintf(str, fmt, p);
        va_end(p);
        wstring tmp(funcname);
        tmp += L"() - ";
        tmp += str;
        cout << tmp;
    }

    (Na jó, az a wstring-es ügy randa, de így sikerült...) Na szóval a __FUNCTIONW__ beírását egy makróval szerettem volna megspórolni. Ezt így szokás: #define LOG(fmt, ...) log(__FUNCTIONW__, fmt, ## __VA_ARGS__)
    Érdekes, hogy a VS-ben a ## nem működik. De nélküle szépen megy!
  2. A másik a #warning utasítás volt, amit nem találtam. Szerettem volna forgatás közben üzeneteket kiírni, hogy később ne felejtsem el, hogy a félmegoldásokat bereszeljem. Végül egy kolléga kisegített! VS-ben a #pragma message("akarmi")
    működik. Egy ilyen példát találtam egy szebb formázásra:

    #define __STR2__(x) #x
    #define __STR1__(x) __STR2__(x)
    #define WARN message("  WARNING: "__FILE__":"__STR1__(__LINE__)"("__FUNCTION__"): ")

    Usage:
    #pragma WARN("Need to do 3D collision testing")

    Érdekes az __STR1__ és __STR2__ használata. Az első a __LINE__  macro-t kifejti, a második pedig szöveget csinál belőle.

Jó sok mindent tud a VS, de még utána kell néznem, hogyan lehet fordítást csinálni command line-ból!

Vadásszunk bitet minden nap!

A bejegyzés trackback címe:

https://qltura.blog.hu/api/trackback/id/tr61863856

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása