gcc (GCC) 3.3 20030304 (Apple Computer, Inc. build 1671)
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
int a(int *a, char *b);함수에서 b에 대해 어떠
int a(int *a, char *b);
함수에서 b에 대해 어떠한 읽기/쓰기 작업도 없다면 오류는 나지 않을 것입니다.
읽기작업을 한다고 하더라도, 혹은 쓰기 작업을 한다고 하더라도 오류없이 동작할 가능성도 있습니다. (단, 이것이 정상적인 동작을 의미하는 것은 아닙니다. 오동작을 할 수도 있고 운 좋게도 정상동작을 할 수도 있다는 뜻입니다.)
컴파일러에따라 컴파일 오류가 날 수도 있으나, 그냥 경고에서 끝날 수도 있습니다.
그래도 분명한 건, "잘못된 소스 코드"라는 겁니다.
단지, C언어의 특성과 컴파일러의 특성 때문에 허용될 수도 있는 것이죠.
파라메터 갯수도 안세준단 말입니까 -_-
파라메터 갯수도 안세준단 말입니까 -_-
오늘 프로그램 작성하다가 이거땜시 한시간 동안 헤멨습니다.ㅋㅋㅋ솔
오늘 프로그램 작성하다가 이거땜시 한시간 동안 헤멨습니다.ㅋㅋㅋ
솔직히 이건 에러로 처리해야 하는거 아닌가요???
어떤 환경에서 어떤 컴파일러를 쓰시나요?저는 분명히[code:
어떤 환경에서 어떤 컴파일러를 쓰시나요?
저는 분명히
라고 나옵니다.
좀더 자세히 적겠습니다.[code:1]main()
좀더 자세히 적겠습니다.
두개를 다른 화일에 저장하고 따로 컴파일 해보세요~
제 컴파일러는 gcc 이고
인자가 하나인 함수 포인터에다가...두개짜리 함수를 넣어준다거나 거꾸
인자가 하나인 함수 포인터에다가...
두개짜리 함수를 넣어준다거나 거꾸로인 상황을 만들었을땐 모르겠지만...
프로토타입을 선언하고 함수 본체를 정의한 경우라면 gcc에선 컴파일이 안되었던 것 같은데요 ;)
물론 함수포인터에 캐스팅해서 넣었을 경우엔 컴파일도 되고 돌기도 합니다... 결과가 원하는 대로 나올지는 미지수지만요 ;)
c는... arguments 개수 등을 체크하는데 인스트럭션을 낭비하지는 않는 걸로 알고 있습니다 :) .... (컴파일러 레벨에서 말구요..)
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
컴파일 되는군요..그리고 인자 하나 받는 함수에 여러개 인자 넘겨
컴파일 되는군요..
그리고 인자 하나 받는 함수에 여러개 인자 넘겨도 되는군요.
자잘한 것 처리해 주고 나면 -Wall 옵션 넣어도 뭐라 안 그러고 넘어가네요.
gcc 버젼은 3.2.2 입니다만..
가능하지요.C 이므로 가능합니다.3.x를 쓰신다면 다음 코드를
가능하지요.
C 이므로 가능합니다.
3.x를 쓰신다면 다음 코드를 컴파일 해보세요.
확장자가 .cc 이면 c++이고 .c 이면 c 이므로 gcc는 각각에 맞게 컴파일하여 링크하게됩니다.
이분야를 좀더 공부하고 싶으시다면, nm, c++filt, objdump, readelf 등을 연구해보시고
검색 키워드로는 function mangling, decoration 등을 찾아 보시면 됩니다.
---
http://coolengineer.com
[quote="pynoos"]이분야를 좀더 공부하고 싶으시다면, nm
좋은 정보 감사합니다.
C 도 간만에 다시 공부해 봐야겠군요~
흥미롭군요......역시 공부하면 할수록 모르는게 많아 지는 군요
흥미롭군요......
역시 공부하면 할수록 모르는게 많아 지는 군요.
댓글 달기