массив строк typedef'd? - PullRequest
       1

массив строк typedef'd?

0 голосов
/ 25 марта 2012

Я пишу программу на C и, поскольку в C нет строки, я написал следующий код для обхода:

typedef char * string

теперь мне нужен массив строк, и следующее выражение выдает ошибку:

string * file1

сообщение об ошибке гласит:

Error   1   error C2275: 'string' : illegal use of this type as an expression   \\vmware-host\shared folders\school\misc\johncpp\porj\similarity.c  79

im на компиляторе MSVC я не могу создать массив строк, который по существу char **?

спасибо

Ответы [ 3 ]

1 голос
/ 25 марта 2012

Как @Oli предлагает в своем комментарии, вы, вероятно, вообще не хотите этого делать. Однако, если вы поставите несколько точек с запятой в правильных местах, ваш код допустим на Си. Это должно быть что-то особенное в MSVC, которое выдает ошибку. Вы уверены, что больше ничего в вашем модуле компиляции не называется string?

Редактировать: Быстрая проверка по по этой ссылке показывает, что вы можете просто объявить переменную там, где вам не разрешено - она ​​должна быть в верхней части блока или за пределами всех блоков (т.е. глобальная переменная).

0 голосов
/ 25 марта 2012

Это именно тот код в файлах?

typedef char * string

должно быть

typedef char * string;

, а

string * file1

должно быть

string * file1;

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

0 голосов
/ 25 марта 2012

Вы объявили file1 в верхней части функции? MSVC не реализует C99, поэтому вы должны объявить каждую переменную сверху. Смотрите комментарии здесь :

Компилятор C также генерирует эту ошибку, если вы пытаетесь определить переменная ниже начала функции (допустимо в C99, но не ранее) если в объявлении переменной используется typedef

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...