Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中修复错误时出错_C - Fatal编程技术网

在C中修复错误时出错

在C中修复错误时出错,c,C,我有一个.c文件和两个标题。我不知道为什么会出现这些错误。我试图在网上找到解决方案,但无法将其应用到我的代码中 结构h #ifndef STRUCTS_H #define STRUCTS_H typedef struct stream { char* enc; //binary string int pos; }stream; typedef struct tag { int tagClass; char tagConstructed; char ta

我有一个.c文件和两个标题。我不知道为什么会出现这些错误。我试图在网上找到解决方案,但无法将其应用到我的代码中

结构h

#ifndef STRUCTS_H
#define STRUCTS_H

typedef struct stream
{
    char* enc; //binary string
    int pos;
}stream;

typedef struct tag
{
    int tagClass;
    char tagConstructed;
    char tagNumber;
}tag;

#endif
Funcs.h错误:

Error   22  error C2143: syntax error : missing '{' before '&'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    15  1   asn1
Error   26  error C2143: syntax error : missing '{' before '&'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    36  1   asn1
Error   21  error C2143: syntax error : missing ')' before '&'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    15  1   asn1
Error   25  error C2143: syntax error : missing ')' before '&'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    36  1   asn1
Error   15  error C2061: syntax error : identifier 'isUniversal'    c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    3   1   asn1
Error   18  error C2061: syntax error : identifier 'isEOC'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    7   1   asn1
Error   17  error C2059: syntax error : 'type'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    3   1   asn1
Error   20  error C2059: syntax error : 'type'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    7   1   asn1
Error   16  error C2059: syntax error : ';' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    3   1   asn1
Error   19  error C2059: syntax error : ';' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    7   1   asn1
Error   24  error C2059: syntax error : ')' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    15  1   asn1
Error   28  error C2059: syntax error : ')' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    36  1   asn1
Error   23  error C2059: syntax error : '&' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    15  1   asn1
Error   27  error C2059: syntax error : '&' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    36  1   asn1


#ifndef FUNCS_H
#define FUNCS_H

#include "Structs.h"

bool isUniversal(tag curTag);
bool isEOC(tag curTag);
char getByte(stream curStream);
void parseTag(stream & str, tag & tag);
char parseLength(stream & str);

#endif
函数.c错误:

Error   22  error C2143: syntax error : missing '{' before '&'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    15  1   asn1
Error   26  error C2143: syntax error : missing '{' before '&'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    36  1   asn1
Error   21  error C2143: syntax error : missing ')' before '&'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    15  1   asn1
Error   25  error C2143: syntax error : missing ')' before '&'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    36  1   asn1
Error   15  error C2061: syntax error : identifier 'isUniversal'    c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    3   1   asn1
Error   18  error C2061: syntax error : identifier 'isEOC'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    7   1   asn1
Error   17  error C2059: syntax error : 'type'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    3   1   asn1
Error   20  error C2059: syntax error : 'type'  c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    7   1   asn1
Error   16  error C2059: syntax error : ';' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    3   1   asn1
Error   19  error C2059: syntax error : ';' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    7   1   asn1
Error   24  error C2059: syntax error : ')' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    15  1   asn1
Error   28  error C2059: syntax error : ')' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    36  1   asn1
Error   23  error C2059: syntax error : '&' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    15  1   asn1
Error   27  error C2059: syntax error : '&' c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c    36  1   asn1


#include "Funcs.h"

bool isUniversal(tag curTag) {
    return curTag.tagClass == 0x00;
}

bool isEOC(tag curTag) {
    return (curTag.tagClass == 0x00) && (curTag.tagNumber == 0x00);
}

char getByte(stream curStream) {
    return curStream.enc[curStream.pos];
}

void parseTag(stream & str, tag & tag)
{
    char buf, tempNumber;
    buf = getByte(str);
    tempNumber = 0x00;
    tag.tagClass = buf >> 6;
    tag.tagConstructed = ((buf & 0x20) != 0);
    tag.tagNumber = buf & 0x1F;
    if (tag.tagNumber == 0x1F)
    {
        do
        {
            str.pos++;
            buf = getByte(str);
            tempNumber = (tempNumber << 7) | (buf & 0x7F);
        }while(buf & 0x80);

        tag.tagNumber = tempNumber;
    }
}

char parseLength(stream & str) {
    char buf, len;
    int numberOfOctets, i;
    buf = getByte(str);
    len = 0x00;
    numberOfOctets = 0;
    if (buf < 0x80) {
        len = buf; //short form
    } else { //long form
        numberOfOctets = buf & 0x7F;
        for (i = 0; i < numberOfOctets; ++i) {
            len = (len * 256) + getByte(str);
            str.pos++;
        }
    }

    return len;
}
Error 22 Error C2143:语法错误:缺少“{”之前的“&”c:\users\natasha\documents\visualstudio 2012\projects\asn1\asn1\functions.c 15 1 asn1
错误26错误C2143:语法错误:缺少“{”之前的“&”c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c 36 1 asn1
错误21错误C2143:语法错误:在“&”c:\users\natasha\documents\visualstudio 2012\projects\asn1\asn1\functions.c 15 1 asn1之前缺少“)”
错误25错误C2143:语法错误:在“&”c:\users\natasha\documents\visualstudio 2012\projects\asn1\asn1\functions.c 36 1 asn1之前缺少“)”
错误15错误C2061:语法错误:标识符“isUniversal”c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c 3 1 asn1
错误18错误C2061:语法错误:标识符“isEOC”c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c 7 1 asn1
错误17错误C2059:语法错误:“type”c:\users\natasha\documents\visualstudio 2012\projects\asn1\asn1\functions.c3 1 asn1
错误20错误C2059:语法错误:“type”c:\users\natasha\documents\visualstudio 2012\projects\asn1\asn1\functions.c 7 1 asn1
错误16错误C2059:语法错误:“;”c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.C3 1 asn1
错误19错误C2059:语法错误:“;”c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c:\7 1 asn1
错误24错误C2059:语法错误:')c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c 15 1 asn1
错误28错误C2059:语法错误:')c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c 36 1 asn1
错误23错误C2059:语法错误:'&'c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c 15 1 asn1
错误27错误C2059:语法错误:'&'c:\users\natasha\documents\visual studio 2012\projects\asn1\asn1\functions.c 36 1 asn1
#包括“Funcs.h”
bool-isUniversal(tag-curTag){
返回curTag.tagClass==0x00;
}
bool isEOC(标记curTag){
返回(curTag.tagClass==0x00)和&(curTag.tagNumber==0x00);
}
char getByte(流curStream){
返回curStream.enc[curStream.pos];
}
void parseTag(stream&str,tag&tag)
{
char buf,tempNumber;
buf=getByte(str);
tempNumber=0x00;
tag.tagClass=buf>>6;
tag.tagConstructed=((buf&0x20)!=0);
tag.tagNumber=buf&0x1F;
if(tag.tagNumber==0x1F)
{
做
{
str.pos++;
buf=getByte(str);

TunMeNo= =(TimeNo.< P>C)没有C++的引用。<代码>无效的PalSeScNog(Struts和STR);不是有效的语法,因为<代码>和代码>,但是您可以使用指针。< /P> 例如,要将
parseLength()
函数转换为使用指针(并更改返回类型以匹配定义),原型将变为:

char parseLength(stream *str);
在函数体中,需要根据需要取消对指针的引用,如下所示:

char parseLength(stream *str) {
    char buf, len;
    int numberOfOctets, i;
    buf = getByte(*str); /* use "*" to get the object from the pointer */
    len = 0x00;
    numberOfOctets = 0;
    if (buf < 0x80) {
        len = buf; //short form
    } else { //long form
        numberOfOctets = buf & 0x7F;
        for (i = 0; i < numberOfOctets; ++i) {
            len = (len * 256) + getByte(*str);
            str->pos++; /* Use "->" to access struct members from the pointer */
        }
    }

    return len;
}
char parseLength(stream*str){
查尔·布夫,伦;
整数个八位组,i;
buf=getByte(*str);/*使用“*”从指针获取对象*/
len=0x00;
八位字节数=0;
如果(buf<0x80){
len=buf;//缩写形式
}else{//长格式
八位字节数=buf&0x7F;
对于(i=0;ipos++;/*使用“->”从指针访问结构成员*/
}
}
回程透镜;
}
此外,您需要传递一个地址(指针),而不是实际的对象,因此您还需要将对函数的调用从
parseLength(str)
更改为
parseLength(&str)

当然,您需要对
parseTag()
和任何其他尝试使用引用的代码进行类似的更改

可能其他一些函数,如
getByte()
也应该使用指针,而不是实际的结构……例如,如果
getByte()
需要修改
stream
参数的
pos
成员,则它会影响调用方的对象,而不仅仅是它的副本


<>代码> > PARSELINGHEN()/CUT>可能应该返回<代码> int <代码>或<代码> SiZeZt而不是<代码> char >代码> Le<代码>看起来它需要比 char >更大的范围。

C没有引用,如C++ +代码>无效的PalSeScNog(流和STR);< /C> >不是有效的语法。(因为
)。不过,您可以改用指针。@Dmitri,谢谢!这个建议帮助我处理了大部分错误。但是带bool的行中的错误仍然存在。我尝试添加,但编译器无法识别此标头/旧版本的C没有
bool
类型,但您可以改用整数类型…C99及以上您可以获得
>bool
包括
stdbool.h
标题。@Dmitri,非常感谢您的帮助!