typedef int A;
typedef int B;
void foo(A arg){}
void main(void){
B wrongvar = 7;
foo(wrongvar);
}
표준에 따라이 구조가 경고/오류를 반환 할 예정입니까? 가장 인기있는 컴파일러는 어떻습니까?'typedef'를 사용하여 논리적 유형 안전 보장
예 : 우리는 킬로그램과 미터를 나타내는 변수를 가지며 모두 'int'유형입니다. 우리는 미터를 처리하는 함수를 가지고 있습니다. 우리는 컴파일러가 변수 변수를 의미하는 킬로그램을 함수에 전달하는 것과 관련된 버그를 잡기를 원합니다.
나는 Ada이 원활하게 처리한다고 믿습니다. 현대 C는 어때?
앞에'typedef' 이러한 문제를 방지 할 수있는 방법을 설명하는 새로운를 제공합니다 이름을 기존 유형으로; 새로운 유형을 생성하지 않습니다. 대체 이름은 동일한 유형을 참조합니다. 따라서'A','B','int','signed int'는 타입 위반없이'foo (A arg)'에 전달 될 수 있습니다. 유형도 경고를 이끌지 않고 전달할 수 있습니다. –
'void main (void)'는'int main (void)'이어야하고'void main (void)'를 사용하라는 언급은 C를 잘 모르는 사람이 쓴 것입니다. –
@KeithThompson, c99는'void main (void)'을 사용하는 것으로 보입니다 (http://stackoverflow.com/a/9356660/1145760). 오해는 질문에 올바르게 태그를 지정하지 않았기 때문입니다. – Vorac