我使用struct:
类型的typedef定义了一个类型// Declate a new struct LVAL
typedef struct {
int type;
long num;
int err;
} lval;
然后尝试使用返回类型lval声明一个函数(使用typedef在上面创建):
// Create a new number type lval
lval lval_num(long x)
{
lval v;
v.type = LVAL_NUM;
v.num = x;
return v;
}
但Visual Studio 2015,没有编译它,没有显示任何错误,只有这两个:
Error C2143 syntax error: missing ';' before '{'
Error C2065 'x': undeclared identifier
有人能发现错误/错误吗?我尝试使用谷歌搜索和其他解决方法没有任何效果。 这是完整的代码段:
// Create enumerations of possible lval struct types
enum { LVAL_NUM, LVAL_ERR };
// Create enumerations of possible lval error types.
enum { LERR_DIV_ZERO, LERR_BAD_OP, LERR_BAD_NUM };
// Declate a new struct LVAL
typedef struct {
int type;
long num;
int err;
} lval;
// Create a new number type lval
lval lval_num(long x)
{
lval v;
v.type = LVAL_NUM;
v.num = x;
return v;
}
我尝试将此功能声明为这样,但是没有工作:
struct lval lval_num(long x)
{
lval v;
v.type = LVAL_NUM;
v.num = x;
return v;
}
编辑:这是使用gcc在LINUX上工作,但不在Windows上工作(VS2015) 虽然这里很快。Code Snippet
答案 0 :(得分:1)
我发现代码中没有错误,因此在此代码之前错误必须是。可能是另一个未终止的{
或丢失的;
。
注意:没有"解决方法"对于语法错误。您必须修复语法错误。不幸的编译器可能非常不清楚遇到实际错误的位置,只能告诉你它在哪里混淆。
答案 1 :(得分:-1)
当我添加头文件stdio.h和main()时。它被编译了