Хобрук: Ваш путь к мастерству в программировании

100 ошибок из моего typedef

Это часть моего кода:

#ifndef INTPROC_OPERATIONS_H
#define INTPROC_OPERATIONS_H

#define MAX_OPERATIONS 256
#define USED_OPERATIONS 8
#define MAX_OPCODE 256
#define OPCODE_TYPE unsigned char

#define OPERANDS_TYPE unsigned char

#include <malloc.h>
#include "executions.h"

typedef struct
{
    OPCODE_TYPE opcode;
    const char * name;
    OPERANDS_TYPE operands_length;
    int (* execute)(char * operands_start, char operands_length);
} OPERATION;

OPERATION * operations[MAX_OPERATIONS];

extern void init_operations();
#define operations_init() init_operations()
extern OPERATION parse_operation(OPCODE_TYPE opcode); //syntax error type

#endif

код.c

#include "code.h"
CODEFILE * create_file()
{
    CODEFILE * ret = (CODEFILE*)malloc(sizeof(CODEFILE));
    ret->actual_instruction = 0; //'actual_instruction' : is not a member of 'CODEFILE'
    ret->length = 0; //'length' : is not a member of 'CODEFILE'
    ret->name = ""; //'name' : is not a member of 'CODEFILE'
    ret->start = 0; /'start' : is not a member of 'CODEFILE'

    return ret;
}

ПРИМЕЧАНИЕ: code.h включает файл operation.h, я где-то ездил, что каскадное включение может быть проблематичным при использовании typedef...

Как написано в заголовке вопроса, я получаю 100 ошибок от Visual C++ 2010, когда пытаюсь скомпилировать этот код. Ошибки вызваны некоторой ошибкой в ​​моем typedef.

Error   95  error C2039: 'actual_instruction' : is not a member of 'CODEFILE'
Error   96  error C2039: 'length' : is not a member of 'CODEFILE'
Error   97  error C2039: 'name' : is not a member of 'CODEFILE'
Error   98  error C2039: 'start' : is not a member of 'CODEFILE'
...
Error   6   error C2059: syntax error : 'type'
Error   64  error C2059: syntax error : 'type'
Error   76  error C2059: syntax error : 'type'

Файл заголовка, который содержит эту структуру, включается в файлы C (я также использую его в других заголовках). Ошибки типа syntax error : 'type' находятся во включаемом файле, остальные - в файлах, в которые включается включаемый файл (с членами). Кто-нибудь знает, где проблема? Пожалуйста помоги.


  • Я не вижу никакого кода, который мог бы привести к ошибкам, которые вы показали, можете ли вы опубликовать нарушающий код? 10.09.2012
  • в code.h включить заголовок, должен ли я вставить сюда код CODEFILE? 10.09.2012
  • Да, очевидно... В сообщении об ошибке указано, что переменные, которые вы пытаетесь установить, не являются частью структуры, поэтому проблема заключается в определении структуры. 10.09.2012

Ответы:


1

У вас наверняка есть синтаксическая ошибка в определении структуры CODEFILE, которая не позволяет компилятору анализировать имена полей. Затем, когда эти поля используются, снова возникает каскад ошибок.

В этих случаях просто сосредоточьтесь на самой первой ошибке.

Если вы используете VS, найдите первую ошибку в окне Выходные данные, а не в окне Ошибки. Последний известен тем, что переупорядочивает ошибки для вашего удобства.

10.09.2012
Новые материалы

Получение стоковых обновлений с помощью Python
Для начинающего финансового аналитика Введение Описание: Этот проект Python создает скрипт для получения текущих обновлений акций с финансового веб-сайта Yahoo. Для этого проекта мы..

Это все, что вам нужно знать о Kotlin в 2022 году
Добро пожаловать! Kotlin — это язык программирования, популярность которого, кажется, растет, его действительно можно использовать для создания чего угодно, и если вы хотите узнать о Kotlin,..

Текстовый графический интерфейс с Lanterna на Java
Мой опыт работы с компьютерами (и текстовыми графическими пользовательскими интерфейсами) начался еще в восьмидесятых, когда я был ребенком, на дне рождения друга. Это был «новенький» Amstrad..

Перезарядите свой мозг: умопомрачительный потенциал мозговых компьютерных интерфейсов
Способность читать свои мысли и управлять объектами разумом долгое время были предметом человеческого любопытства, ограниченного областью научной фантастики… то есть до сих пор? С технологией,..

Основы C# — Нулевой оператор объединения (??)
Оператор ?? называется null-coalescing operator . Этот оператор используется для предоставления значения по умолчанию, если значение операнда в левой части оператора равно null ...

Сравнение номеров версий в C++ с использованием синтаксического анализа строк
Номера версий обычно используются для обозначения развития или обновлений программного обеспечения или любого другого продукта. При работе с номерами версий в C++ может быть полезно сравнить две..

В мир искусственного интеллекта…
ИИ — это новое топливо в современном мире. Куда бы вы ни обратились, с кем бы вы ни разговаривали — они, как правило, упоминают об ИИ хотя бы раз в ходе разговора. ИИ гудит повсюду. У каждого..