avatar
yy
1
看到一个example 里有:
#define assert(v) { if ((v) == 0) printf(" binarysearch bug %d %d\n", i, n);}
请问这个 define 是用来干嘛的,
看到过 #define PI 3.1415, 这个是用来定义常数的, 倒容易理解
谢谢
avatar
c*s
2
判断v是否非空,如果是0就dump 一些message
可以这样用
int i=0;
assert(i);

【在 yy 的大作中提到】
: 看到一个example 里有:
: #define assert(v) { if ((v) == 0) printf(" binarysearch bug %d %d\n", i, n);}
: 请问这个 define 是用来干嘛的,
: 看到过 #define PI 3.1415, 这个是用来定义常数的, 倒容易理解
: 谢谢

avatar
yy
3
Thanks!
不过, 这个挺让我吃惊的,我原先以为, 只可以define一个常数,
没想到还可以define function, 例如,上例中的 i 可以替换那个v.

【在 c****s 的大作中提到】
: 判断v是否非空,如果是0就dump 一些message
: 可以这样用
: int i=0;
: assert(i);

avatar
t*l
4

macros are inline code. i.e. whatever you define in your macros,
that will be inserted into your code during compiling. it may
be useful for testing and debugging by conditional compiling.
i, n);}

【在 yy 的大作中提到】
: Thanks!
: 不过, 这个挺让我吃惊的,我原先以为, 只可以define一个常数,
: 没想到还可以define function, 例如,上例中的 i 可以替换那个v.

avatar
yy
5
如果我有一个assert function 定义在头文件中,
这个 define 的 assert 是不是会覆盖头文件的那个?
谢谢

【在 t*******l 的大作中提到】
:
: macros are inline code. i.e. whatever you define in your macros,
: that will be inserted into your code during compiling. it may
: be useful for testing and debugging by conditional compiling.
: i, n);}

avatar
P*f
6
还有更吃惊的
MFC使用macro的串化连接替代了vtable

【在 yy 的大作中提到】
: Thanks!
: 不过, 这个挺让我吃惊的,我原先以为, 只可以define一个常数,
: 没想到还可以define function, 例如,上例中的 i 可以替换那个v.

avatar
g*g
7
stay away from this kind of define in C++,
you can use const for constant and inline for function.

【在 yy 的大作中提到】
: 看到一个example 里有:
: #define assert(v) { if ((v) == 0) printf(" binarysearch bug %d %d\n", i, n);}
: 请问这个 define 是用来干嘛的,
: 看到过 #define PI 3.1415, 这个是用来定义常数的, 倒容易理解
: 谢谢

avatar
q*c
8
yeah. I hate define as well. I am so happy to see C# disabled define
that way...
Define is too messy once proj become large.

【在 g*****g 的大作中提到】
: stay away from this kind of define in C++,
: you can use const for constant and inline for function.

avatar
g*g
9
To be fair, C# doesn't have this genuine idea, they
just copy java.

【在 q*c 的大作中提到】
: yeah. I hate define as well. I am so happy to see C# disabled define
: that way...
: Define is too messy once proj become large.

avatar
q*c
10
it is very hard to understand such a obvious and simple idea
need so long to happen.

【在 g*****g 的大作中提到】
: To be fair, C# doesn't have this genuine idea, they
: just copy java.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。