Как напечатать определенный строковый макрос в C? - PullRequest
1 голос
/ 26 февраля 2012

Я заранее прошу прощения, если об этом уже спрашивали, но я не смог найти ничего на SO, которое конкретно относится к .

По сути, скажем, у меня есть простой макрос:

#define STR "somestring"

Когда я делаю printf или puts для этого макроса, я получаю1012 *

error: expected ')' before ';' token

Это буквально так просто:

int main( int argc, char** argv )
{

    puts( STR ); //error

    return 0;
}

Возможно ли это?Если да, то как?

1 Ответ

2 голосов
/ 26 февраля 2012

Скорее всего, проблема в том, что STR переопределено в какой-то момент вашей программы.Следующий код компилируется просто отлично.

#define STR "something"
int _tmain(int argc, _TCHAR* argv[])
{
    puts(STR);
    return 0;
}

В качестве эксперимента попробуйте выбрать другое имя, скажите STR_TEST и посмотрите, работает ли это.Если это так, то вы знаете, что макрос определен в другом месте

Другим возможным источником ошибки является то, что строка #define заканчивается ; (это не должно)

...