小编use*_*888的帖子

for循环宏编码风格

我在大学的一位导师建议使用宏来减少c99代码中的重复,就像这样.

#define foreach(a, b, c) for (int a = b; a < c; a++)
#define for_i foreach(i, 0, n)
#define for_j foreach(j, 0, n)
#define for_ij for_i for_j
Run Code Online (Sandbox Code Playgroud)

哪个可以这样使用:

for_ij { /*do stuff*/; }
for_i  { /*do stuff*/; }
Run Code Online (Sandbox Code Playgroud)

另一位具有工业背景的导师不鼓励使用它,声称它在他的前雇主身上被视为一种反模式(但他不知道背后的原因).实际上,通过浏览大型项目的源代码,很少能够在简短的学术范例之外找到这些结构.

我的问题是:为什么这种结构在实践中很少使用?它在某种程度上是危险的吗?

c macros loops c-preprocessor

4
推荐指数
1
解决办法
604
查看次数

标签 统计

c ×1

c-preprocessor ×1

loops ×1

macros ×1