Outils pour utilisateurs

Outils du site


lang:cpp:preprocesseur

Ceci est une ancienne révision du document !


Utiliser les std::initializer_list avec des macros

Le préprocesseur a du mal avec les {}. Il faut mettre le type explicitement et entourer le tout de parenthèse.

void f(std::list<std::string>) {}
#define F(XXXX) f(XXXX)
 
int main()
{
  std::list<std::string> c;
  f(c);
  f({"1", "2", "3", "4"});
  F((std::list<std::string>{"1", "2", "3", "4"}));
  F(std::list<std::string>({"1", "2", "3", "4"}));
}

Passing an initialization list to a macro Archive du 27/08/2019

lang/cpp/preprocesseur.1566888564.txt.gz · Dernière modification : 2019/08/27 08:49 de root