预期标识符或'('在C中

时间:2016-08-21 09:06:39

标签: c cs50

我最近开始关注Edx的CS50课程。当我尝试编译代码时,我遇到了第二个问题集,这条消息出现了:

public class ValidateModelStateAttribute : ActionFilterAttribute
{

    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (!actionContext.ModelState.IsValid)
        {
            actionContext.Response = actionContext.Request.CreateErrorResponse(
   HttpStatusCode.BadRequest, actionContext.ModelState);
        }

    }
}

如果您需要我的代码,请点击:

    Repository<User> userRepository = new Repository<User>();

    [HttpPost, ActionName("Register"), AllowAnonymous, ValidateModelState]
    public ActionResult Create(UserRegister useReg)
    {
        userRepository.Insert(UserFactory.UserRegisterFactory(useReg));
        userRepository.save();
        return new HttpStatusCodeResult(HttpStatusCode.OK);
    }

如果我的代码有任何其他问题,请您为我提示一下吗?

3 个答案:

答案 0 :(得分:3)

int main (int argc, string argv[])
{
  int key;

需要在括号内

答案 1 :(得分:0)

这就是你的代码应该是这样的:

int main (int argc, string argv[])
{            // <-- every function definition begins with {
    int key;

    if (argc != 2)
    {
        printf("error\n");
    }
    else
    {
        key = atoi(argv[1]);

        if (key == 0 || key < 0)
        {
            printf("error");
        }
        else
        {
            printf("%i\n", key);
        }
    }
}

你的问题是一个简单的描述错误,因此它可能应该被关闭。我发布了完整的代码,因为我无法在一条评论中显示此内容。

答案 2 :(得分:0)

将声明int key移到main的括号内。

然后将main的string argv[]参数更改为char* argv[]。对于string argv[]签名,main根本不正确。

您还需要包含stdio.h和stdlib.h。

您的代码如下所示:

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char* argv[])
{
    int key;

    if (argc != 2)
    {
        printf("error\n");
    }
    else
    {
        key = atoi(argv[1]);

        if (key == 0 || key < 0)
        {
            printf("error");
        }
        else
        {
            printf("%i\n", key);
        }
    }
}

已通过Coliru

验证