2014-12-03 1 views
1

Я очень новичок в C (после многих лет). Я использую lcc64 и имеют следующее заявлениеоперанды = имеют незаконные типы

char *logMessage = strdup(argv[1]); 

Я понятия не имею, почему я получаю ошибку

"operands of = have illegal types 'pointer to char' and 'int" 

Любые предложения?

+2

У вас есть '#include '? – zch

+1

'strdup' - это нестандартное расширение. Вы должны иметь '#include ' * и * вам нужно убедиться, что 'strdup' виден. Для gcc вы можете сделать последнее с помощью * not *, используя '-std = cNN', где' NN' - '90',' 99' или '11', чтобы указать версию стандарта C. –

+0

strdup() восходит к началу языка C, и все библиотеки C имеют его. Это делает его настолько же стандартным, как все, что ратифицировано организацией. – Andras

ответ

1

вам необходимо включить <string.h> объявить strdup() как возвращение символ *, иначе компилятор считает, что возвращает Int

+0

oops, what zch said – Andras

+1

Не объявляйте 'strdup' себя. –

+0

oops, у меня был '' там, но он слишком похож на тег, а уценка проглотила его – Andras