Red hat 리눅스 g++ 버전 4.1.2 에서 개발한 프로그램을 g++ 버전 4.4.5 에서 컴파일하는데 문법 에러가 많이 발생합니다.

yeomhw86의 이미지

컴파일 버전이 올라가면서 문법이 엄격해져서 발생하는 에러들 같은데
이런 에러들을 잡을 수 있는 방법이 있을까요?

컴파일러 버전을 낮출 수 있는 옵션이나 에러들을 무시할 수 있는 방법을 찾아보다가
이곳에서 도움을 요청합니다.

jachin의 이미지

4.1.1 버전에서 컴파일 성공한 소스코드도 4.4.5 에서 잘 컴파일이 되는 것을 확인하였습니다.

에러 내용이 어떻게 되려나요?

4.1.2 이후의 Release Notes 를 보아도 문법의 변화 때문에 일어날 오류는 없는 것 같습니다.

혹, libstdc++ 버전이 다르거나, 다른 설정 때문에 그런 것은 아닐까요?

yeomhw86의 이미지

memcpy 나 printf 함수가 선언되어 있지 않다거나 하는 에러가 많습니다.
그래서 string.h 나 stdio.h 같은 헤더파일들을 추가해줘서 에러를 수정해서 잡기는 하는데
기존의 4.1.1 버전에서 개발한 프로그램이 워낙 크기도 하고 이런 에러들이 너무 많아서요;
다 수정하는게 맞겠지만 급하게 필요할 때에 임시방편으로 할 수 있는 방법이 있지 않을까 해서 질문드렸습니다.

libstdc++ 버전은 컴파일 버전과 맞게 설정되어 있었습니다.

제 생각에는 4.4.5 버전에서는 오류검사를 좀 더 엄격하게 하도록 바뀐 것 같습니다.
낮은 컴파일 버전에서 개발한 프로그램을 높은 컴파일 버전에서 돌리려니까 이런 문제점들이 발견되네요..;

답글 감사합니다. !!

jachin의 이미지

memcpy나 printf 모두 cstring 이나 cstdio 를 포함하시면 될 듯 한데, 파일들마다 정의하시기 힘드시니까요...
프로젝트 선언 부분에서 정의하시면 될 것 같습니다. g++ 부분에 -l 옵션으로 cstring과 cstdio등을 추가해주시면 되지 않을까요?

그런데 C++ 프로젝트인가요, C 프로젝트인가요? 그렇게 많이 쓸 이유가...;;;;

익명 사용자의 이미지

-l 옵션은 라이브러리 추가하는건데 헤더 파일이랑 먼 상관...

라이브러리랑 헤더 파일이랑 구분 못하나 보네...

하긴 그니까 저번에 헤더 파일이 /usr/lib 밑에 있다고 개드립을 쳤었지...

개코메디다 진짜...

prolinko의 이미지


strict하게 검사해서 생기는 문제는 해당 에러 메세지로 검색을 해보거나 해서 해당 문법 검사에 맞는 것을 꺼주는 옵션을 찾아야 합니다. 컴파일러 에러 메세지 옆에 해당 옵션을 출력해 주는 경우도 있습니다.

저는 최근 컴파일러를 쓰면서 이런 문제를 자주 접했는데 "Warning도 error다"는 신념에 따라 웬만하면 경우에는 소스를 고침으로 서 해결 합니다.

hwatk의 이미지

Warning도 error (-Werror)라는데 동의하구요.
굳이 내가 유지하는 코드가 아닌 경우, CFLAGS에 -include {header file} 정도를 해주면 좋겠네요.

g++ -include stdio.h 이런식으로..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.