22018, 1/1101 회원가입  로그인  
   ndn1665
   우분투의 gcc가 c언어 표준규격을 따르나요? 예 아니오 라도..제발

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=35272 [복사]


ㅠㅠ말해주세요

  Hit : 9604     Date : 2017/08/08 10:37



    
김답변 C언어 표준을 따르지 않는 C컴파일러는 아주 옛날에 터보C, 볼랜드C 정도밖에 없습니다
gcc, clang과 같은것들은 모두 표준을 엄격히 준수하는 컴파일러들입니다
그리고 C언어 표준이라고 질문자님이 말씀하신것이 문법에서의 표준으로 보이는데
2017년 표준인 c++17도 다 지원됩니다
2017/08/10  
김답변 근데 표준을 따르기도 하지만 추가기능도 있습니다 표준규격을 따른다는게 표준에 명시된것만 구현돼있다는 뜻은 아니고
예를들어 doxygen support라든지 여러 최적화기법은 컴파일러에 따라서 상이합니다
2017/08/10  
ndn1665 친절한 답변 감사합니다
복받으세요~
2017/08/10  
김답변 아 그런데 이런건 있을 수 있겠군요
C언어 표준에서의 main함수는
int main(int argc, char *argv[]) 혹은 int main(void) 로 정의하고 있습니다 (C99 섹션 5.1.2.2.1)
그런데 gcc를 사용할 땐
main() { } 이렇게 리턴형도 명시하지 않아도 되고 인자도 명시하지 않아도 됩니다
이런거에서 표준을 "엄격히" 준수하지는 않는다고 할 수 있겠네요
2017/08/11  
김답변 그러니까 프론트엔드단에서 어느정도 납득가능한 수준의 간편한 사용이 가능하다는거죠
예를들어 헤더파일을 인클루드 하지 않고도 printf같은 함수를 implicit declaration 으로 사용할 수 있는데
c99 에서는 함수를 암묵적(implicitly)으로 선언하는것을 정의하고 있지 않습니다 (c99 표준에서 "implicit" 검색 결과 기준)
2017/08/11