У меня возникает проблема компилятора в Visual Studio 2005 с использованием стандартного компилятора C при попытке сделать копию структуры из одного места в другое.Проблемы с копией структуры
типы определены в файле следующим образом:
definition.h
#define MAX 7
typedef struct{
char recordtext[18];
boolean recordvalid;
}recordtype;
typdef recordtype tabletype[MAX];
typedef struct{
tabletype table;
}global_s;
Давайте делать вид, что global_s «объект» конкретизируется и инициализируется где и указатель на эту структуру создается.
#include "definition.h"
global_s global;
global_s* pglobal = &global;
init(&pglobal);
Между тем, в другом файле (и это где моя проблема) я пытаюсь создать локальный объект TABLETYPE, и заполнить его с глобальным элементом таблицы, используя метод GET для защиты глобальной (позволяет делать вид, что это «статический»)
#include "definition.h"
extern global_s* pglobal;
tabletype t;
gettable(&t);
void gettabl (tabletype* pt)
{
*pt = pglobal->table;
}
Когда я иду к компиляции, строка в GetTable функции вызывает ошибку компилятора «C2106 ошибка:„=“:. левый операнд должен быть л-значение это выглядит, как если бы это должно вести себя как обычная операция копирования, и на самом деле, если я выполняю аналогичную операцию в более базовой структуре, я не получаю ошибку. Например, если я копирую структуру, содержащую только две интуиции RS.
У кого-нибудь есть подробное объяснение, почему эта операция кажется неправильной?
(Отказ от ответственности: Я разработал этот код как очищенную версию моего фактического кода, например, чтобы он не был на 100% правильным синтаксически, я отредактирую вопрос, если кто-нибудь укажет на проблему или что-то нужно уточнить .)