返回类型typedef结构的函数在VS2015中不起作用

时间:2016-04-22 12:28:56

标签: c visual-studio

我使用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

2 个答案:

答案 0 :(得分:1)

我发现代码中没有错误,因此在此代码之前错误必须是。可能是另一个未终止的{或丢失的;

注意:没有"解决方法"对于语法错误。您必须修复语法错误。不幸的编译器可能非常不清楚遇到实际错误的位置,只能告诉你它在哪里混淆。

答案 1 :(得分:-1)

当我添加头文件stdio.h和main()时。它被编译了