相关疑难解决方法(0)

C Struct中的默认值

我有这样的数据结构:

    struct foo {
        int id;
        int route;
        int backup_route;
        int current_route;
    }

以及一个名为update()的函数,用于请求对其进行更改.

  update(42, dont_care, dont_care, new_route);

这真的很长,如果我在结构中添加一些内容,我必须在每次调用更新(...)时添加'dont_care'.

我正在考虑将结构传递给它,但事先用'dont_care'填充结构比在函数调用中拼写它更加繁琐.我可以使用默认值dont care在某处创建结构,并在我将其声明为局部变量后设置我关心的字段吗?

    struct foo bar = { .id = 42, .current_route = new_route };
    update(&bar);

将我希望表达的信息传递给更新功能的最优雅的方法是什么?

我希望其他一切都默认为-1("不关心"的密码)

c initialization

91
推荐指数
4
解决办法
14万
查看次数

真实使用X-Macros

我刚学会了X-Macros.您看过X-Macros的实际用途?他们什么时候成为工作的合适工具?

c macros c-preprocessor x-macros

67
推荐指数
5
解决办法
2万
查看次数

看到扩展的C宏

如果我想扩展一个C宏,有什么好方法可以做到这一点(除了手动跟踪)?

例如,GTK_WIDGET_SET_FLAGS它使用一个使用宏的宏(或两个)......

我希望看到它以某种方式自动扩展,而不是搜索每一个宏,每一步.

UPDATE

我试过cpp,但似乎只做了第一次传球

上:

GTK_WIDGET_SET_FLAGS(obj, 13)
Run Code Online (Sandbox Code Playgroud)

我扩展了包含文件,然后:

G_STMT_START{ ((GTK_OBJECT_FLAGS (obj)) |= (13)); }G_STMT_END
Run Code Online (Sandbox Code Playgroud)

这是由这些错误消息解释我在stderr上得到这个(当使用-o filename时)

gtk/gtkwidget.h:34:21: gdk/gdk.h: No such file or directory
gtk/gtkwidget.h:35:31: gtk/gtkaccelgroup.h: No such file or directory
gtk/gtkwidget.h:36:27: gtk/gtkobject.h: No such file or directory
gtk/gtkwidget.h:37:31: gtk/gtkadjustment.h: No such file or directory
gtk/gtkwidget.h:38:26: gtk/gtkstyle.h: No such file or directory
gtk/gtkwidget.h:39:29: gtk/gtksettings.h: No such file or directory
gtk/gtkwidget.h:40:21: atk/atk.h: No such file or directory

gtk,atk和gdk目录都在当前的工作目录中,那么如何让cpp在其中搜索呢?

顺便说一句,gcc -E给出完全相同的输出cpp

UPDATE2:

通过使用gcc -E并使用-I选项传递include目录来解决包含路径问题

c c-preprocessor

47
推荐指数
7
解决办法
5万
查看次数

C宏定义可以引用其他宏吗?

我想弄清楚的是,如果像这样的东西(用C语写):

#define FOO 15
#define BAR 23
#define MEH (FOO / BAR)
Run Code Online (Sandbox Code Playgroud)

被允许?我希望预处理器替换每个实例

MEH
Run Code Online (Sandbox Code Playgroud)

(15 / 23)
Run Code Online (Sandbox Code Playgroud)

但我不太确定它会起作用.当然,如果预处理器只通过代码一次,那么我认为它不会按照我想要的方式运行.

我找到了几个类似的例子,但所有这些都让我理解得太复杂了.如果有人能帮我解决这个简单的问题,我将永远感激不尽!

c c-preprocessor

40
推荐指数
3
解决办法
3万
查看次数

标签 统计

c ×4

c-preprocessor ×3

initialization ×1

macros ×1

x-macros ×1