我正在嘗試測試我的代碼到目前爲止,並且在編譯測試運行時出現錯誤。C錯誤預期標識符
這裏是我的代碼:
mips_op.h文件
#ifndef MIPS_OP_H
#define MIPS_OP_H
typedef enum {
R, I, J
} op_type;
typedef struct op_instr {
op_type op_t; // instruction type {R, I, J}
int opcode : 6; // instruction opcode - 6-bit integer
// if the instruction type is J
#if op_t == J
int address : 26; // address to jump to - 26-bit integer
#else // if the instruction type is R or I
int rs : 5; // the output - 5-bit integer
int rt : 5; // the first operand - 5-bit integer
#if op_t == R // if instruction type is R
int rd : 5; // the second operand - 5-bit integer
int shamt : 5; // the shift amount field - 5-bit integer
int funct : 6; // the function field
#endif
#if op_t == I // if instruction type is R
int immediate : 16; // the immediate field - 16-bit integer
#endif
#endif
};
#endif
,這裏是main.c文件,
#include <stdio.h>
#include "mips_op.h"
int main (void) {
printf("Before instr\n");
op_instr add;
printf("After instr\n");
return 0;
}
,這裏是我得到
錯誤In file included from main.c:2:0:
mips_op.h:9:10: error: expected ')' before 'op_t'
main.c: In function 'main':
main.c:7:2: error: unknown type name 'op_instr'
我的代碼有什麼問題?爲什麼我得到這個錯誤?
感謝
編輯:固定支架,以大括號
你似乎有一種幻想,你可以使用預處理器條件在運行時動態定義你的結構嗎?考慮使用聯合來處理這種事情 –
呵呵,好的非常感謝Paul –
它可能有利於*閱讀錯誤信息任何時候當你看到一個'''期望的時候,你可以放心的是有一個未關閉的'''在那裏,但是那部分代碼不應該有一個在哪裏*在*附近。所以去找到它(''typedef struct op_instr('<<<< =====)並修復它。 – WhozCraig