저는 최근에 다음과 같이 보이는 몇 가지 코드를 보았습니다.두 개의 인수로 sizeof 연산자를 호출하는 이유는 무엇입니까?
if(sizeof(var,2) == 4) { ... }
(var
는 형식 임)
sizeof
연산자에 대한 두 개의 인수가있는 것을 보니 매우 놀랐습니다. ISO/ANSI C99 표준의 빠른 스캔은 어떤 비밀도 산출하지 못했습니다. 쉼표를 허용하는 문법을 읽지 못했습니다.
Google 코드를 검색하면 일부 PPC 코드에서이 구문의 an example를 찾을 수있었습니다.
이것은 PPC 특정 구문입니까? 무슨 뜻이에요?
WindRiver Diab compiler편집 : 그것은 내가 뭘보고 있었는지 -뿐만 아니라 링크 된 코드 - 특정 구문을 WindRiver Diab compiler :
sizeof (형식, const) :
int-const가 0 인 경우 sizeof 형식의 바이트 단위 크기를 반환합니다.
int-const가 1 인 경우 sizeof는 유형의 정렬을 반환합니다.
int-const가 2 인 경우 sizeof는 유형을 지정하는 정수를 반환합니다. 값은 Diab C/C++ 사용자 안내서에서 "sizeof operator"를 찾으십시오.
와우, 그들은 sizeof
연산자의 의미를 실제로 오버로드했습니다.
EDIT2 : 전체 설명서는 다음 위치에 있습니다. http://www.vxdev.com/docs/vx55man/diab5.0ppc/c-additi.htm#3001432
"var"는 유형이라는 것을 언급하는 것이 중요합니다. 왜냐하면 쉼표 연산자를 배제 할 것이기 때문입니다. 그러나 귀하의 질문에 "var"변수처럼 보입니다. –
명확성을 위해 이름이 변경된 변수. 감사. –
편집 : 와우, 그게 ... C 언어의 불필요한 복잡성. C는 충분히 복잡합니다 ... 정렬을 말할 수 있기를 원한다면, 당신이 주장한다면, 함수의 정렬 또는 연산자를 작성하십시오. 쳇. (너의 잘못이 아니라 데이비드, 나쁜 언어 구현 자에 대해 방금 ...) –