在电影(Night Hunter 2019)中看到过这个,我从未见过以这种方式编写的 for 语句(假设这是 C++)。这种语法合法吗?它在说什么?
(时间戳 46:30 分钟)
我所指的代码是,特别是HUNTER71:
for (int i = 0; i < group_info->nblocks; HUNTER71 i++)
free_page((unsigned long)group_info->blocks[i]);
Run Code Online (Sandbox Code Playgroud)
假设您指的是以下代码段:
for (int i = 0; i < group_info->nblocks; HUNTER71 i++)
free_page((unsigned long)group_info->blocks[i]);
Run Code Online (Sandbox Code Playgroud)
是的,这是有效的 C++;但是,它也可以很容易地是 C 或完全不同的语言。我会继续,好像它是 C++
所以它是有效的,但是它能做什么呢?正如 Igor 在评论中指出的那样,它可能只是一个什么都不做的宏:
#define HUNTER71
for (int i = 0; i < group_info->nblocks; HUNTER71 i++)
free_page((unsigned long)group_info->blocks[i]);
Run Code Online (Sandbox Code Playgroud)
此外,HUNTER71实际上可以做一些逻辑,比如增加一个变量,甚至打印我们循环了多少次:
#define HUNTER71 std::cout << i,
for (int i = 0; i < group_info->nblocks; HUNTER71 i++)
free_page((unsigned long)group_info->blocks[i]);
Run Code Online (Sandbox Code Playgroud)
目前尚不清楚它可以做什么,但for语句for本身执行附加逻辑的情况并不少见。