首页 > 解决方案 > 如何使用 uncrustify 对齐函数声明?

问题描述

我正在尝试使用 uncrustify 复制 GNU 编码标准。我的程序有以下函数声明,

static void connect_to_server_cb1 (GObject      *source_object,
                                   GAsyncResult *result,
                                   gpointer      user_data);

static gboolean connect_to_server_cb2 (GObject     *source_object,
                                   GAsyncResult *result,
                                   gpointer      user_data);

static void connect_to_server_cb3 (GObject      *source_object,
                                   GAsyncResult *result,
                                   gpointer      user_data);

我期待输出如下,

static void     connect_to_server_cb1 (GObject      *source_object,
                                       GAsyncResult *result,
                                       gpointer      user_data);

static gboolean connect_to_server_cb2 (GObject      *source_object,
                                       GAsyncResult *result,
                                       gpointer      user_data);

static void     connect_to_server_cb3 (GObject      *source_object,
                                       GAsyncResult *result,
                                       gpointer      user_data);

我应该尝试哪个配置选项来实现这一点?

标签: uncrustify

解决方案


我不确定 uncrustify 是否可以完全满足您的要求。您可以尝试使用gcu-lineup-parameters来自GNOME C Utils的程序对输出进行后处理,例如,Nautilus 已经使用了该程序。Nautilus 源代码树包含一个run-uncrustify.sh 脚本,它为每个文件执行此操作:

# Aligning prototypes is not working yet, so avoid headers
"$UNCRUSTIFY" -c "$DATA/uncrustify.cfg" --no-backup "$FILE"
"$DATA/lineup-parameters" "$FILE" > "$FILE.temp" && mv "$FILE.temp" "$FILE"

如果您只想处理 .c 文件,这应该可以工作,但评论表明在标头中对齐原型更加困难。


推荐阅读