首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有if语句和变量声明的MSVC语法错误

带有if语句和变量声明的MSVC语法错误
EN

Stack Overflow用户
提问于 2014-08-18 18:56:17
回答 1查看 294关注 0票数 0

我搞不懂这件事。在命令行上用MSVC编译器编译的普通C。

Microsoft (R) 32位C/C++优化编译器版本15.00.30729.01用于80x86 版权(C)微软公司。版权所有。

对于if (NULL == string) { return NULL; }块,我得到一个语法错误。

代码语言:javascript
复制
..\src\drift_charbuffer.c(78) : error C2143: syntax error : missing ';' before 'type'
..\src\drift_charbuffer.c(79) : error C2065: 'index' : undeclared identifier
..\src\drift_charbuffer.c(79) : error C2065: 'index' : undeclared identifier
..\src\drift_charbuffer.c(79) : error C2065: 'index' : undeclared identifier
..\src\drift_charbuffer.c(81) : error C2065: 'index' : undeclared identifier
..\src\drift_charbuffer.c(85) : error C2065: 'index' : undeclared identifier
..\src\drift_charbuffer.c(87) : error C2065: 'index' : undeclared identifier    

但是如果没有if块,它会编译得很好。我只是看不出这里出了什么问题。

代码语言:javascript
复制
char*
drift_charbuffer_tostring(const drift_charbuffer* buffer)
{
    // todo: UTF-8 encoding for characters outside the ASCII-range.
    char* string = drift_alloc(buffer->count + 1);
    if (NULL == string)
    {
        return NULL;
    }

    int index;     // Line: 78
    for (index = 0; index < buffer->count; ++index)
    {
        int value = *drift_charbuffer_get(buffer, index);
        if (value > 127)
            value = '?';

        string[index] = value;
    }
    string[index] = 0;
    return string;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-18 19:02:33

嗯,你的“普通C”实际上是C99或后C99 C。同时,MSVC编译器只支持“经典的好老普通C”AKAC89/90。在经典C中,混合语句和声明是非法的。所有声明都必须在块的顶部执行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25370187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档