C 函数名和第一个大括号之间的变量声明
我正在阅读一篇关于C语言中的代码模糊处理的文章,其中一个示例将主要函数声明为:C 函数名和第一个大括号之间的变量声明,c,obfuscation,C,Obfuscation,我正在阅读一篇关于C语言中的代码模糊处理的文章,其中一个示例将主要函数声明为: int main(c,v) char *v; int c;{...} 我从未见过这样的东西,v和c是全局变量吗 完整的例子如下: #include <stdio.h> #define THIS printf( #define IS "%s\n" #define OBFUSCATION ,v); int main(c, v) char *v; int c; { int a = 0; char f
int main(c,v) char *v; int c;{...}
我从未见过这样的东西,v
和c
是全局变量吗
完整的例子如下:
#include <stdio.h>
#define THIS printf(
#define IS "%s\n"
#define OBFUSCATION ,v);
int main(c, v) char *v; int c; {
int a = 0; char f[32];
switch (c) {
case 0:
THIS IS OBFUSCATION
break;
case 34123:
for (a = 0; a < 13; a++) { f[a] = v[a*2+1];};
main(0,f);
break;
default:
main(34123,"@h3eglhl1o. >w%o#rtlwdl!S\0m");
break;
}
}
#包括
#定义这个printf(
#定义为“%s\n”
#定义混淆,v);
int main(c,v)char*v;INTC;{
int a=0;字符f[32];
开关(c){
案例0:
这是混淆
打破
判例34123:
对于(a=0;a<13;a++){f[a]=v[a*2+1];};
主(0,f);
打破
违约:
干管(34123,“@h3eglhl1o.>w%o#rtlwdl!S\0m”);
打破
}
}
文章:(不再有效),但可以找到这是老式的函数定义
void foo(a,b)
int a;
float b;
{
// body
}
与
void foo(int a, float b)
{
// body
}
您的大小写与intmain(intc,char*v){…}
相同,但不正确
正确的语法是:intmain(intc,char**v){…}
或者,intmain(intc,char*v[]){…}
编辑:记住在main()
中,v
应该是char**
而不是您所写的char*
我认为它是
K&R
C风格。它是函数声明的前ansic语法。我们不再使用它了。这与:
int main(int c, char *v)
那么int main(intc,char*v)也一样吗?@algui91-是的。这是
K&R C