关于typedef struct的用法
在cuda.h文件中,看到这样的一些定义。typedef struct CUctx_st *CUcontext;
....
之后有
CUresultCUDAAPI cuCtxCreate(CUcontext *pctx, unsigned int flags, CUdevice dev );
这样的行为是不是定义一个结构体指针类型,之后用时,以结构体指针为参数。
却不知道是什么样的结构体,因为CUctx_st 并未定义。
不太明白,求解^_^。 就是你说的那样。
CUctx_st 并未定义,难道编译没报错? 嗯,CUctx_st 并未定义,编译没报错。
在汇编里指针都是一个型,在c里,只是个别名吧,知道语义,强制转换成unsigned int *也未必不可,编译器的行为。
又如typedef int INT32; 等等。
用时,可以这样:
// Create context
CUcontext cuContext;
error=cuCtxCreate(&cuContext, 0, cuDevice); typedef struct CUctx_st *CUcontext;
...这个之后必须得有个struct CUctx_st{....};才对; 要不CUcontext 这个结构体指针式就是未定义的啊。。。
CUresultCUDAAPI cuCtxCreate(CUcontext *pctx, unsigned int flags, CUdevice dev ); // 这个只是声明;
是不在头文件的代码? 1# G-Spider
应该跟C++一样,是前置声明吧.
为了使得发布的接口头文件看不到实现的具体细节.
把它的定义放在了实现文件了.
需要看源代码.
页:
[1]