Я пытался ниже программуИдентификатор Не определено макросъемки
#include <iostream>
using namespace std;
#define MKSTR(x) #x
#define CONCATE(x , y) (x)##(y)
int main()
{
int xy = 100;
cout << MKSTR(HELLO C++) << endl;
cout << CONCATE(HELLO,C++) << endl;
cout << CONCATE(x,y) << endl;
return 0;
}
и получаю ошибку
ошибка C2065: 'Привет': необъявленный идентификатор
. Я не вижу, почему компилятор VS 2012 ожидает аргумент макроса или рассматривает их как идентификатор. Также макрос MKSTR
работал нормально, но макрос CONCATE
дает мне проблемы. Не могу понять, почему компилятор делает это.
Спасибо, что я предположил, что конкатенированная строка будет напечатана также вместо определения нового макроса CONCATESTR. Я попытался сделать что-то вроде MKSTR (CONCATE (HELLO, Cpp)), любую идею, почему это не работает. –
@Surfing_SO Отредактировано сейчас только для вашего нового вопроса – Kiroxas