LINUX.ORG.RU

История изменений

Исправление wota, (текущая версия) :

Напиши такой же макрос с помощью stl

#define insert_unique( tbl, ... ) \
    [__VA_ARGS__]() \
    { \
        string query = string("INSERT INTO `") + tbl + "`(" + #__VA_ARGS__ + ") VALUES (" + join(__VA_ARGS__); \
        return db_->execute( query ).id; \
    }();

#define mk_host(...) insert_unique( "host", __VA_ARGS__ )

вероятно как-то так, но я б так не писал, просто потому-что завязываться на имя переменной - неправильно и чревато ошибками, я б жестко забил имена в структуру:

host h;
h.name = "localhost";
h.port = 80;
int id = mk_host( h );

или

int id = mk_host( { "localhost", 80 } );

если таки хочется сэкономить на коде

Исправление wota, :

Напиши такой же макрос с помощью stl

#define insert_unique( tbl, ... ) \
    [__VA_ARGS__]()
    {
        string query = string("INSERT INTO `") + tbl + "`(" + #__VA_ARGS__ + ") VALUES (" + join(__VA_ARGS__);
        return db_->execute( query ).id;
    }();

#define mk_host(...) insert_unique( "host", __VA_ARGS__ )

вероятно как-то так, но я б так не писал, просто потому-что завязываться на имя переменной - неправильно и чревато ошибками, я б жестко забил имена в структуру:

host h;
h.name = "localhost";
h.port = 80;
int id = mk_host( h );

или

int id = mk_host( { "localhost", 80 } );

если таки хочется сэкономить на коде

Исходная версия wota, :

Напиши такой же макрос с помощью stl

#define insert_unique( tbl, ... ) \
    [__VA_ARGS__]()
    {
        string query = string("INSERT INTO `") + tbl + "`(" + #__VA_ARGS__ + ") VALUES (" + join(__VA_ARGS__);
        return db_->execute( query ).id;
    }();

#define mk_host(...) insert_unique( "host", __VA_ARGS__ )

вероятно как-то так, но я б так не писал, просто потому-что завязываться на имя переменной - неправильно и чревато ошибками, я б жестко забил имена в структуру:

host h;
h.name = "localhost";
h.port = 80;
int id = mk_host( h );

или

host h;
h.name = "localhost";
h.port = 80;
int id = mk_host( { "localhost", 80 } );

если таки хочется сэкономить на коде