line) && ANNOTATE_SOURCE) { visit(n->line-6ren">
gpt4 book ai didi

c - 在宏中使用 "#"时出错

转载 作者:行者123 更新时间:2023-12-02 09:32:39 25 4
gpt4 key购买 nike

我正在尝试清理现有代码,并且我确实格式化了以下宏

#define v(x) { if (!is_visited(n->line) && ANNOTATE_SOURCE) { visit(n->line); sprintf(buffer, "#\n# LINE %d: %s#\n", n->line, get_line(n->line)); program = emit(program, buffer); }}

#define v(x) {\
if (!is_visited(n->line) && ANNOTATE_SOURCE)\
{\
visit(n->line);\
sprintf(buffer, "#\n# LINE %d: %s#\n", n->line,get_line(n->line));\
program = emit(program, buffer);\
}\
}\

我收到错误:“#”后面没有宏参数

我在论坛中进行了搜索,但我无法理解为什么会发生此错误,尽管我没有尝试在任何其他宏中使用任何宏。

编辑:

我尝试执行 sprintf(buffer, "\#\n\# LINE %d: %s\#\n", n->line,get_line(n->line)); (给#添加了转义字符,仍然出现同样的错误)

最佳答案

您必须确保 \ 是换行符之前的行的最后一个字符。您的程序中并非如此:\ 之后有空格。

关于c - 在宏中使用 "#"时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31193516/

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