只声明这个函数extern int* vCastPointerTo( void * pvArgument ),后续直接调用 int *a = vCastPointerTo(buf)怎么理解,不会报错吗
时间: 2023-02-26 08:39:12 浏览: 46
这是一个用来将void指针转换为int指针的函数。"extern" 说明它在其他文件中定义,只在当前文件进行声明。直接调用 "int *a = vCastPointerTo(buf)" 将void指针 "buf" 作为参数传递给函数并将返回值赋值给 "a",如果函数的实现是合法的,那么不会报错。但如果转换不能完成或是函数实现有错误,可能会导致程序崩溃或是不可预料的结果。
相关问题
extern int yylineno; extern char* yytext; extern int yylex();
这是一组与词法分析器相关的声明和函数调用。具体来说:
- extern int yylineno:声明了一个名为 yylineno 的全局变量,用于记录当前词法分析器解析到的行号。
- extern char* yytext:声明了一个名为 yytext 的全局变量,用于记录当前词法分析器解析到的词法单元的文本内容。
- extern int yylex():声明了一个名为 yylex 的函数,该函数是词法分析器的核心函数,用于从输入流中获取下一个词法单元,并返回该单元的类型码。
在使用词法分析器时,通常需要包含一个名为 lex.yy.c 的文件,该文件由词法分析器生成,其中包含了实现上述全局变量和函数的代码。通过调用 yylex 函数,可以逐个获取输入流中的词法单元,并在需要时获取当前行号和文本内容。
extern int munmap (void *__addr, size_t __len) __THROW;
这是一个函数声明,声明了一个名为 `munmap` 的函数,它用于解除映射的内存区域。
函数声明的定义如下:
```c
extern int munmap(void *__addr, size_t __len) __THROW;
```
该函数接受两个参数:
- `__addr`:要解除映射的内存区域的起始地址。
- `__len`:要解除映射的内存区域的长度。
函数返回一个整数值,表示操作的结果。通常情况下,如果操作成功,则返回0;如果操作失败,则返回-1。
需要注意的是,`__THROW` 是一个宏,用于指示该函数不会抛出异常。在标准C库中,通常使用 `__THROW` 宏来修饰不会抛出异常的函数。具体的实现可能根据操作系统和编译器的不同而有所差异。