2013-04-15 3 views
3

나는 다른 날에 포인터 화살표를 c의 특정 방법으로 사용해서는 안된다는 통지를 받았습니다. 나는 보통 난 그냥 물어보고 싶은게포인터 화살표 사이의 간격

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

참조 무엇

struct info { 
    int x; 
    char *data; 
} 

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

는이 단지 일반 코딩 표준 일이 내가했던입니까? 나는 p- 느낌보다 훨씬 깨끗합니다.

답변

10

그것은보기의 통 사적 관점에서 중요하지 않습니다 같은, 그것은 중요하지 않은 공백입니다.

공백없는 스타일은 (anectdotally) 훨씬 더 일반적이라고 말할 수 있습니다. 어떻게 든 구조체 봉쇄의 "조임 (tightness)"을 반영하기 때문에 좋았습니다. 물론, 내가 공백 거의 모든 다른 이항 연산자 , 즉

a->b = 1 + 2; 

및 쓰기 결코

a -> b = 1+2; 

또는

a->b = 1+2; 

그것은 결국, 단지 개인적인 취향입니다. 물론 많은 전문적인 환경에서 "프로젝트/회사 스타일 가이드"가 이것이 완료된 방법이라고 규정합니다. "

또한 . 연산자를 사용하여 구조체를 직접 작업 할 때도 같은 방식으로 사용합니다. 항상 :

a.b = 1 + 2; 

결코 :

a . b = 1+2; 

나는, 운영자 측면의 두 가지가 같은 일의 일부입니다 제가 위에서 말하는 시도로 전자 서식, 이후 나를 위해 작동 생각 , "a.b"은 2가 아닌 용어입니다. +을 사용하면 두 개의 피연산자가 독립적이므로 간격이 더 적절합니다.

5

C는 매우 자유로운 형식의 언어이며 공백 (탭, 공백, 줄 바꿈 등)은 파서가 무시합니다.

information -> x = 0; 

information->x=0; 

information 
-> 
x 
= 
0 
; 
1

이것은 맛의 문제이므로 https://softwareengineering.stackexchange.com/의 경우 더 좋습니다.

일반적으로 표준은 공간이 없다고 생각합니다. 내 C 코드에서 나는 산술 연산자를 x + y 등으로 쓰고 구성원 액세스 연산자는 a->y 등으로 작성합니다. 이것은 멤버와 그 소유자가 "하나의 단위"라고 생각할 수 있기 때문에 산술 연산은 여러 개의 고유 한 값에 대한 연산이므로, 그들의 유일한 관계는 당신의 표현에서 함께 사용된다는 것입니다. 반면에 회원은 기본적으로 소유자에게 구속력이 있으며 공간이 부족하다는 의미입니다.

당신이 좋아하는 것을 사용하십시오. 그리 큰 차이는 아닙니다. 아직도 자주 사용되는 것이 무엇인지 알고 싶다면 공간없는 버전입니다.