4

前几天我被告知我不应该在 C 中以某种方式使用指针箭头。我所做的是:

struct info {
    int x;
    char *data;
}

int main() {
    struct info *information;
    information -> x = 0; /*Notice the spacing here between information and -> x*/
    information -> data = "";
}

我平时看到的

struct info *information;
information->x = 0;

我只是想问一下,这只是常规的编码标准吗?
我只是觉得->p->stuff

4

3 回答 3

11

从句法的角度来看,这并不重要,它是微不足道的空格。

我会说(有趣地)没有空格的样式更常见。我觉得它很好,因为它以某种方式反映了结构遏制的“紧密性”。当然,我空格写的几乎所有其他二元运算符,即

a->b = 1 + 2;

永不

a -> b = 1+2;

或者

a->b = 1+2;

最后,这只是个人喜好。当然,在许多专业环境中,“项目/公司风格指南规定这就是它的完成方式,在这里”。

此外,当使用.运算符直接处理结构时,我使用相同的方式。总是:

a.b = 1 + 2;

永不:

a . b = 1+2;

我认为前一种格式对我有用,因为正如我在上面所说的那样,运算符两侧的两件事是同一件事的一部分,“ a.b”是一个术语,而不是两个。使用+,它的两个操作数是独立的,所以间距对我来说更有意义。

于 2013-04-15T10:20:14.453 回答
6

C 是一种非常自由格式的语言,解析器会忽略空格(制表符、空格、换行符等)。

information -> x = 0;

是相同的

information->x=0;

information
->
x
=
0
;
于 2013-04-15T10:20:03.133 回答
1

这是一个口味问题,因此对于https://softwareengineering.stackexchange.com/可能更好。

一般来说,我认为标准是没有空间。在我的 C 代码中,我将算术运算符写为x + yetc,将成员访问运算符写为a->yetc。这是因为成员及其所有者可以视为“一个单元”,而算术是对多个不同值的操作,其唯一关系是它们恰好在你的表达中一起使用。另一方面,成员或从根本上与其所有者绑定,而空间不足表明了这一点。

使用你喜欢的任何一个 - 它没有太大的区别。不过,如果您想知道更频繁地使用什么,那就是无空格版本。

于 2013-04-15T10:23:06.640 回答