电影中的代码不清楚。这是合法的吗?

ell*_*lis 1 c++ syntax

在电影(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)

Tas*_*Tas 5

假设您指的是以下代码段:

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本身执行附加逻辑的情况并不少见。