Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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语言的新手,使用Mingw32编译器。 现在我正在创建从IL到C(本机)的反编译器 生成的代码(不带System.Object): 反编译测试应用程序\u Program.c #include "DecompileTestApplication_Program.h" DecompileTestApplication_Program* DecompileTestApplication_Program__ctor( ) { if (array__DecompileTestApplica

我是C语言的新手,使用Mingw32编译器。 现在我正在创建从IL到C(本机)的反编译器

生成的代码(不带System.Object):

反编译测试应用程序\u Program.c

#include "DecompileTestApplication_Program.h"
DecompileTestApplication_Program* DecompileTestApplication_Program__ctor( ) {
    if (array__DecompileTestApplication_Program == 0) {
        array__DecompileTestApplication_Program=(void**)malloc(sizeof(void*)*(capacity__DecompileTestApplication_Program=4));
    }
    DecompileTestApplication_Program* this;
    //error: 'this' undeclared (first use in this function)
    if (count__DecompileTestApplication_Program==0) {
        this=(DecompileTestApplication_Program*)malloc(sizeof(DecompileTestApplication_Program));
        goto RealConstructor;
    }
    this=(DecompileTestApplication_Program*)array__DecompileTestApplication_Program[--count__DecompileTestApplication_Program];
    RealConstructor:
    this->ind = 0;
    this->a = 1;
    this->b = 3;
    //this._inherit_object_( ); //this is OOP tests ,still working on it
    return this;
}
void DecompileTestApplication_Program_Main( ) {
    int var_0_02;
    var_0_02 = 0;
    var_0_02 = ( var_0_02 + 1 );
    int var_1_08;
    var_1_08 = 1;
    int var_2_0A;
    var_2_0A = 3;
    var_1_08 = ( var_1_08 + var_2_0A );
    var_0_02 = ( var_0_02 + ( var_1_08 + var_2_0A ) );
    DecompileTestApplication_Program_blat = ( DecompileTestApplication_Program_blat + ++DecompileTestApplication_Program_bpa );
}
void DecompileTestApplication_Program__cctor( ) {
    DecompileTestApplication_Program_blat = 1;
    DecompileTestApplication_Program_bpa = 4;
}
反编译测试应用程序\u Program.h

#ifndef DecompileTestApplication_Program
#define DecompileTestApplication_Program
/*
Type's Name: DecompileTestApplication.Program
Time to Parse: 40.0023ms
*/
#include <stdio.h>
typedef struct {
    //Variables
    int ind;
    int a;
    int b;
} DecompileTestApplication_Program;
static int DecompileTestApplication_Program_blat;
static int DecompileTestApplication_Program_bpa;
//Methods
void DecompileTestApplication_Program_Main( );
DecompileTestApplication_Program* DecompileTestApplication_Program__ctor( );
void DecompileTestApplication_Program__cctor( );
static int count__DecompileTestApplication_Program=0;
static int capacity__DecompileTestApplication_Program=0;
static DecompileTestApplication_Program** array__DecompileTestApplication_Program=0;
#endif
void main();
@main.cpp

//bookmart for includes
#include "DecompileTestApplication_Program.h"


void main() {
    //bookmark for initialize
    DecompileTestApplication_Program__cctor();
    DecompileTestApplication_Program_Main();
}
在第一个文件中发现的错误。 我搜索了一段时间来解决这个错误, 但是没有找到

#define DecompileTestApplication_Program
这意味着无论你在哪里看到反编译测试应用程序这个词,它都会被删除。因此,您试图声明此:

DecompileTestApplication_Program* this;
扩展到

* this;

它试图取消引用未声明的变量
this
。要解决此问题,请更改宏名称。

是否确实反编译了纯C文件?它看起来像C++,它是由IL生成的,是OOP,我还在研究它。H2CO3,我怎样才能把它变成C?问题是什么还不清楚,但这主要是因为这里有很多代码。请通过剥离所有您知道不相关的内容来构造一个。您使用什么编译器来编译生成的C源代码?也许它不能处理语句间的声明,或者它将<代码>这个< /代码>作为C++兼容性的保留字?由于某种原因,它没有识别<代码>反编译程序AppIpAsTIX程序*;代码>作为声明。很好的捕获。通常的做法是使宏名称有一个前导字符和/或尾随字符
字符(或两个)。有点愚蠢的自动发电机会犯这样的错误。就我个人而言,我使用的是
H\u HEADERNAME
。尽量避免使用前导的
\uu
字符,在大多数情况下它是无效的(保留名称空间),但尾随的
\u
字符会很好地工作。(我是开发人员)他犯了那个错误没关系。@superfle——好吧——我以为你在用别人已经存在的发电机。(实际上,C的整个包含方案从一开始就搞砸了——在每个包含的开始处使用ifdef/define应该是不必要的。旧的语言可以实现包含,而不需要这样胡说八道。)