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
C 函数名和第一个大括号之间的变量声明_C_Obfuscation - Fatal编程技术网

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

我正在阅读一篇关于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[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