请问这个define语句怎么理解?可以运行吗?

哈利_蜘蛛侠 2014-03-16 10:54:53
我这个报错,用VS 2013,提示this declaration has no class storage or type specifier,怎么办呢?应该如何修改呢?


// initializes a direct draw struct
#define DD_INIT_STRUCT(ddstruct) { memset(&ddstruct, 0, sizeof(ddstruct));
ddstruct.dwSize = sizeof(ddstruct); }
...全文
111 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-03-17
  • 打赏
  • 举报
回复
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。gcc加-E
lm_whales 2014-03-17
  • 打赏
  • 举报
回复
宏的替代选项有 1) enum {xxxx = c}; 针对,命名常量 类型的宏 2) const int x =c; 针对,命名常量 类型的宏 3) 模板 ---- 这是针对泛型,函数类型的宏 4) inline 函数,或者函数模板,针对 宏调用的嵌入代码能力。 PS: 不是任何时候,C++的宏,都有C++的其他代码,可以很好的替代的。
sniffer12345 2014-03-16
  • 打赏
  • 举报
回复
ctrl+enter居然自动给我发了擦。。 "以及是不是鼓励在C++中使用。如果不鼓励,有何等价方法来实现这个语句?" 大家都不鼓励,但我很喜欢宏,不喜欢模板。所以我的搭档总是抱怨我写太多宏了 不鼓励的话一般用模板来替换,不过像你这个,如果不用宏的话,真不好写。这个主要是C代码吧,针对结构体的。你要是C++的话,就最好不要这样用了。这代码有很多的暗示前提。
sniffer12345 2014-03-16
  • 打赏
  • 举报
回复
引用 4 楼 u011873969 的回复:
[quote=引用 3 楼 lovenanforever 的回复:] [quote=引用 1 楼 derekrose 的回复:]

// initializes a direct draw struct
#define DD_INIT_STRUCT(ddstruct) { memset(&ddstruct, 0, sizeof(ddstruct));\
ddstruct.dwSize = sizeof(ddstruct); }
define 连接符 [/quote] 这……好吧……不过能否讲解一下代码的意义呢?define的用法,后面的语句的用法,以及是不是鼓励在C++中使用。如果不鼓励,有何等价方法来实现这个语句?[/quote] define就是定义一个宏,你可以想象成在代码编译前做的一个自动的文本替换。 语法的意思就是,定义一个宏“DD_INIT_STRUCT”,它会对代码中所有的DD_INIT_STRUCT文本做替换,并且DD_INIT_STRUCT()括号内的值作为替换文本参数,替换成宏的具体内容。 具体内容就是,memset,把结构清0,ddstruct.dwSize = sizeof(ddstruct);再填入结构的size
深度抽象 2014-03-16
  • 打赏
  • 举报
回复
必须放到一行。可以使用 \ 是多行编程逻辑上的 一行。
哈利_蜘蛛侠 2014-03-16
  • 打赏
  • 举报
回复
引用 3 楼 lovenanforever 的回复:
[quote=引用 1 楼 derekrose 的回复:]

// initializes a direct draw struct
#define DD_INIT_STRUCT(ddstruct) { memset(&ddstruct, 0, sizeof(ddstruct));\
ddstruct.dwSize = sizeof(ddstruct); }
define 连接符 [/quote] 这……好吧……不过能否讲解一下代码的意义呢?define的用法,后面的语句的用法,以及是不是鼓励在C++中使用。如果不鼓励,有何等价方法来实现这个语句?
仙境之桥2046 2014-03-16
  • 打赏
  • 举报
回复
引用 1 楼 derekrose 的回复:

// initializes a direct draw struct
#define DD_INIT_STRUCT(ddstruct) { memset(&ddstruct, 0, sizeof(ddstruct));\
ddstruct.dwSize = sizeof(ddstruct); }
define 连接符
sniffer12345 2014-03-16
  • 打赏
  • 举报
回复
// initializes a direct draw struct #define DD_INIT_STRUCT(ddstruct) { memset(&ddstruct, 0, sizeof(ddstruct)); \ ddstruct.dwSize = sizeof(ddstruct); }
derekrose 2014-03-16
  • 打赏
  • 举报
回复

// initializes a direct draw struct
#define DD_INIT_STRUCT(ddstruct) { memset(&ddstruct, 0, sizeof(ddstruct));\
ddstruct.dwSize = sizeof(ddstruct); }

65,207

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧