gpt4 book ai didi

c - #define OUTPUT(j) count++ 这是做什么的?

转载 作者:行者123 更新时间:2023-11-30 21:49:25 24 4
gpt4 key购买 nike

我想把它翻译成c#。但我卡在输出上。

“#define OUTPUT(j)”的作用是什么?

我见过这个。 C++ Define function

它看起来像 func 定义,但输入参数 j 与 count 无关。

代码来自: https://github.com/smart-tool/smart/blob/master/source/algos/raita.c

#define OUTPUT(j) count++  


void preBmBc(unsigned char *x, int m, int bmBc[]) {
int i;
for (i = 0; i < SIGMA; ++i)
bmBc[i] = m;
for (i = 0; i < m - 1; ++i)
bmBc[x[i]] = m - i - 1;
}

int search(unsigned char *x, int m, unsigned char *y, int n) {
int j, bmBc[SIGMA], count;
unsigned char c, firstCh, *secondCh, middleCh, lastCh;
if(m<2) return -1;

/* Preprocessing */
BEGIN_PREPROCESSING
preBmBc(x, m, bmBc);
firstCh = x[0];
secondCh = x + 1;
middleCh = x[m/2];
lastCh = x[m - 1];
END_PREPROCESSING

/* Searching */
BEGIN_SEARCHING
count = 0;
j = 0;
while (j <= n - m) {
c = y[j + m - 1];
if (lastCh == c && middleCh == y[j + m/2] &&
firstCh == y[j] &&
memcmp(secondCh, y + j + 1, m - 2) == 0)
OUTPUT(j);
j += bmBc[c];
}
END_SEARCHING
return count;
}

最佳答案

预处理器指令

#define OUTPUT(j) count++

使预处理器将每次出现的 OUTPUT(j) 替换为 count++,其中 j 是变量,可以在模式部分中使用该指令的。

代码

#define OUTPUT(j) count++

int count(4);
OUTPUT(1234);
std::cout << count << '\n';

翻译为

int count(4);
count++;
std::cout << count << '\n';

由预处理器处理,然后由编译器编译。

此代码的输出是5。由于未使用 j,因此该参数被忽略。

关于c - #define OUTPUT(j) count++ 这是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55299422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com