VIsual studio 2005에서 다른 cpp파일 함수 불러 오는 방법이 어떻게 되나요?

  • #298568
    타고난혀 67.***.171.165 2939

    버전업을 한 1999 단계 했더니..도통 적응을 못하겠습니다.

    VS 6.0 쓰다가 2005를 써보는데, 이거 도통 적응을 못하겟습니다.

    다름이 아니라, 여러개 CPP파일을 함수별로 모아 놓고선, 필요 할때마다 헤더 부분에 “xxxx.cpp”이렇게 하면 vc6.0에서는 별탈 없이 링크가 되서 컴파일이 됐는데..

    2005에서는 already defined 됐다고 하면서 실행이 안되네요.

    모든 파일은 같은 폴더에 집어 넣고 컴파일 시켰습니다.

    뭐가 잘못된걸까요??

    그냥 단순히 다른.cpp 파일에 있는 함수를 간단히 링크 시켜서 불러올수있는 방법은 없는건가요?

    • 헤더 71.***.164.32

      class definition은 .h파일 class body는 .cpp로 하고, 사용하는 데서 #include 하고 쓰면 VS6 VS2005 둘다 잘 되는데.

      참고로 ‘C’에서 자주 쓰는 방법인데 free procedure나 global variable을 써야 하는 경우는 아무데서나 불러 쓰기 위해서 .h 파일에 두군데서 쓰기위해 define을 다음과 같이 쓰는 방법도 있습니다.

      xxx.h
      #ifdef GLOBAL_XXX
      #define E
      #define I(x) =x
      #else
      #define E extern
      #define I(x)
      #endif

      E int free_procedure();
      E int xxx_var I(0);


      xxx.cpp
      #define GLOBAL_XXX
      #include
      int free_procedure()
      {

      }


      yyy.cpp
      #include

      if (global_var)
      {

      }

    • 헤더 71.***.164.32

      #undef E
      #undef I
      빼먹었습니다.
      #define E 나 #define I를 쓰기전에 미리 #undef하고 써야합니다.

    • gonfly 71.***.210.232

      원하시는게 extern이 아닐런지.만약 헤더에 함수를 선언하지 않고 cpp에 햇을경우 일단 그 함수의 스코프는 그 cpp함수안에서만 쓰겠다는 의도로 사용합니다. 단 다른곳에서 그 함수를 쓰고 싶을땐 extern void fun1();을 사요하시려는 함수위에 선언하시고 사용하시면 될거 같네요. 그리고 일단 h를 만들어서 함수를 선언하실때
      #ifndef _파일명_
      #define _파일명_
      void func1();
      void func2();
      #endif
      이런식으로 하시고 위의 헤더파일을 인클루드 하시면 redefinition에러는 사라질 겁니다. 아마 아실지도 타고난 혀님께서 아실지도 모르겠네요..제가 주제 넘었으면 너그러이 바주시고요..헤헤…더 원하신다면 effective c++1, 2를 강력 추천합니다. ^^

    • gonfly 71.***.210.232

      혹시 이런 개발에 관련된 답을 찾고싶으시면 http://www.devpia.com도 추천드려요…
      한국사이트입니다. 하하

    • 타고난혀 67.***.171.165

      >>아마 아실지도 타고난 혀님께서 아실지도 모르겠네요..
      이런말 해도 될지 모르겟지만, X도 모릅니다….

      X의 해석은 안해주셧음 하는 바램이 잇사옵니다.

    • Troy 129.***.163.233

      #ifndef _파일명_
      #define _파일명_
      void func1();
      void func2();
      #endif

      대신에 아래를 쓰셔도 좋습니다.

      #pragma once

      데브피아 보다는 http://www.codeguru.com이나 http://www.codeproject.com을 추천합니다. 영문 사이트입니다.

    • 타고난혀 67.***.171.165

      프로젝 프라퍼리 가서 precompile 옵숀을 no로 했더니, 그냥 바로 컴파일 됩니다.. 근데 CPP에서는 꼭 H파일에 펑션 이름 다 선언해준후 쓰고 그래야 하는건가요??

      저는 그냥 간단하게, main.cpp에서 부설 펑션 불러 올려고 #include “mystring.cpp” , #include “myVectoc.cpp” 이렇게 연결해서 ㅆㅓㅅ습니다(VC6.0에서요).

      그럼 당취 precompile이란 무엇이길래 저런 에러를 내 뱉는 것인쥐요?