G-Spider 发表于 2011-10-9 10:45:55

关于typedef struct的用法

在cuda.h文件中,看到这样的一些定义。

typedef struct CUctx_st *CUcontext;
....
之后有
CUresultCUDAAPI cuCtxCreate(CUcontext *pctx, unsigned int flags, CUdevice dev );

这样的行为是不是定义一个结构体指针类型,之后用时,以结构体指针为参数。
却不知道是什么样的结构体,因为CUctx_st 并未定义。

不太明白,求解^_^。

风云剑 发表于 2011-10-9 12:21:15

就是你说的那样。
CUctx_st 并未定义,难道编译没报错?

G-Spider 发表于 2011-10-9 15:36:38

嗯,CUctx_st 并未定义,编译没报错。
在汇编里指针都是一个型,在c里,只是个别名吧,知道语义,强制转换成unsigned int *也未必不可,编译器的行为。
又如typedef int INT32; 等等。
用时,可以这样:
// Create context
CUcontext cuContext;   
error=cuCtxCreate(&cuContext, 0, cuDevice);

plp626 发表于 2012-7-6 15:59:27

typedef struct CUctx_st *CUcontext;
...这个之后必须得有个struct CUctx_st{....};才对; 要不CUcontext 这个结构体指针式就是未定义的啊。。。

CUresultCUDAAPI cuCtxCreate(CUcontext *pctx, unsigned int flags, CUdevice dev ); // 这个只是声明;

是不在头文件的代码?

wayne 发表于 2012-7-6 17:40:25

1# G-Spider
应该跟C++一样,是前置声明吧.
为了使得发布的接口头文件看不到实现的具体细节.
把它的定义放在了实现文件了.
需要看源代码.
页: [1]
查看完整版本: 关于typedef struct的用法