七月绛雪

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

C中函数的"非正常"使用

#include <stdio.h>

static int i=0;

int * Increase()
{
    i
++;
    
return &i;
}


void (* (* (* (* (* (* (* (* (* (* (* (* Inc())() )() )() )() )() )() )() )() )() )() )() )()
{                //这里可以嵌套很多次;
    i++;
    
return Inc;
}


void main()
{
    Increase();        
//i=1;
    (*Increase()) ++;     //i=3;这样来对其操作
    printf("%d\n",i);

    (
*Increase()) = 9;    //i=9;同上
    printf("%d\n",i);

/*-------------------*/

    Inc();            
//i=10;仍可以正常调用
    printf("%d\n",i);

    Inc()()()()()()()()()()()()();    
//Inc()()() <-- 这里可以调用至嵌套层数n次;
    printf("%d\n",i);

    
return;
}

但在VS.NET2003中会有如下警告:
e:\TC\LEARN.C(14): warning C4047: “return” : “void (__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *)())())())())())())())())())())())()”与“void (__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *(__cdecl *)())())())())())())())())())())())())()”的间接级别不同
 这个警告该如何消除呢?有知道的话请一定要告诉我啊!
posted on 2004-11-15 19:03  七月绛雪  阅读(220)  评论(0)    收藏  举报