C ';这';未声明(首次在此函数中使用)
我是C语言的新手,使用Mingw32编译器。 现在我正在创建从IL到C(本机)的反编译器 生成的代码(不带System.Object): 反编译测试应用程序\u Program.cC ';这';未声明(首次在此函数中使用),c,C,我是C语言的新手,使用Mingw32编译器。 现在我正在创建从IL到C(本机)的反编译器 生成的代码(不带System.Object): 反编译测试应用程序\u Program.c #include "DecompileTestApplication_Program.h" DecompileTestApplication_Program* DecompileTestApplication_Program__ctor( ) { if (array__DecompileTestApplica
#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应该是不必要的。旧的语言可以实现包含,而不需要这样胡说八道。)