2014-06-29 3 views
0

Je:Comment concaténer chaîne littérale et MACRO chaîne valide dans C++

QString ver =""; 
QString ver += "-svn-"SVN_REVISION 

qui donne une erreur me montrant ver:

error: missing terminating " character 
    ver += "-svn-"SVN_REVISION; 

SVN_REVISION est défini comme 1.

Comment puis-je les concaténer pour être une chaîne valide?

+0

Pour clarifier, 'SVN_REVISION' est une macro avec le nombre littéral *' 1' et non la chaîne '" 1 "'? –

+0

Vous devez utiliser l'opérateur '#' stringify. Voir https://gcc.gnu.org/onlinedocs/cpp/Stringification.html – Barmar

Répondre

3

Vous pouvez utiliser le support stringify du préprocesseur comme cela a été mentionné dans les commentaires. Voici un exemple:

#define BASIC_STR(x) #x 
#define STR(x) BASIC_STR(x) 

QString ver =""; 
QString ver += "-svn-" STR(SVN_VERSION); 
0
QString ver = QString("-svn-%1").arg(SVN_REVISION);