如果我在clang格式配置中使用此选项:

PointerAlignment: Right

星号会被贴在Variable的名字上.例如:

char *p;

如果我在某个函数上try 此选项,它将产生以下结果:

char *foo(void);

那么,有没有让它左对齐来实现功能的选项呢?我想要得到这个:

char* foo(void);

推荐答案

C声明语法按照一定的优先级围绕应用了某些运算符的标识符来工作.类型说明符的列表在应用了所有这些运算符之后指定表达式的类型.在这方面,函数并不是特例.事实上,您可以有以下转发声明:

int f(void), *g(void);

这意味着表达式f()*g()都产生int.在f上应用函数调用运算符会产生int.对g应用函数调用运算符,然后对*应用一元运算符,也会产生int.

这就是为什么"自然"的方法是将星号放在标识符旁.

C++相关问答推荐

你能用自己的地址声明一个C指针吗?

为什么在C中进行大量的位移位?

为什么删除CAP_DAC_OVERRIDE后创建文件失败?

如何将长字符串转换为较小的缩写,该缩写由第一个字符、最后一个字符和中间的字符数组成?

在CLANG中调试预处理器宏

SSH会话出现意外状态

如何计算打印二叉搜索树时每行所需的空间?

链接到底是如何工作的,我在这里到底做错了什么

如何使用FSeek和文件流指针在C中查找文件的前一个元素和前一个减go 一个元素

在C++中允许使用字符作为宏参数

将多项式从文件.txt加载到终端时出现问题

如何确保我将使用C标准库函数的函数版本,如&getc";,而不是类似函数的宏版本?

从BIOS(8086)中读取刻度需要多少?

&stdbool.h&q;在嵌入式系统中的使用

C:面筋蛋白';为什么不刷新窗口?

哪些C++功能可以在外部C块中使用

'printf("%s", user_input)' 危险吗?

为什么<到达*时不会转换为>?

如何在 C 中的 Postgres 函数的表中 for 循环

在 C23 之前如何对空指针使用nullptr?