搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

void* alloca()中不懂的

请看这个例子:

FILE *open_err_file( char *name )
{
    char *buffer;
    /* allocate temporary buffer for file name */
    buffer = (char *)alloca( strlen( name ) + 5 );
    if( buffer ) {
        FILE *fp;
        sprintf( buffer, "%s.err", name );
        fp = fopen( buffer, "w" );
        return fp;
    }
    return (FILE *)NULL;
}
int main( void )
{
    FILE *fp;
    if((fp = open_err_file( "err_name" ))<0) {
          printf( "Unable to open error file\n" );
          return(1);
    } else {
        fprintf( fp, "Hello from the alloca test.\n" );
        fclose( fp );
    }
    return EXIT_SUCCESS;
}

这里的alloca()前怎么要用(char *)n呢?是因为buffer的类型是char *吗?那这个函数的原型定义中的void *中的void的意思就是可以是任何数据类型啦??
可以很莱,但我想清楚的知道,先谢过。。

就是类型转换
把返回的void*转换成char*类型

这样可以减少一个警告
alloc系列函数返回的都是void*, 直接赋值给非void*的指针会在编译时得到警告
强制转换后就好了
这是一个好习惯,hoh
相关文章:
© 2006   www.java-asp.net