Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. ifstream in mfc cause strange errors in debug only [modified]

ifstream in mfc cause strange errors in debug only [modified]

Scheduled Pinned Locked Moved C / C++ / MFC
csharpc++visual-studiodebugginghelp
13 Posts 5 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Maxwell Chen

    The order of #include's may matter. Which do you include first? "stdafx.h" or <fstream> ?


    Maxwell Chen

    T Offline
    T Offline
    toxcct
    wrote on last edited by
    #4

    i don't think it is the matter here, otherwise he would have got a "precompiled header"-like error


    TOXCCT >>> GEII power

    [VisualCalc 3.0  updated ][Flags Beginner's Guide  new! ]

    1 Reply Last reply
    0
    • F FredrickNorge

      I use vs2005, when i want to debug my mfc app with #include fstream i get a endless list of problems refering to the xdebug(32)file. A few errors: 1>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xdebug(32) : warning C4229: anachronism used : modifiers on data are ignored 1>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xdebug(32) : error C2365: 'operator new' : redefinition; previous definition was 'function' 1>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xdebug(32) : error C2078: too many initializers 1>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xdebug(32) : error C2440: 'initializing' : cannot convert from 'int' to 'void *' When i do a release however, everything works just fine... any sugestions? - Fred -- modified at 12:26 Tuesday 18th July, 2006

      C Offline
      C Offline
      Cedric Moonen
      wrote on last edited by
      #5

      As the problem is only in debug mode, maybe there is something wrong with some preprocessor definition. If you have a #ifdef _DEBUG statement at the top of your file, post it here (completely) so we can have a look.


      Cédric Moonen Software developer
      Charting control

      F 1 Reply Last reply
      0
      • C Cedric Moonen

        As the problem is only in debug mode, maybe there is something wrong with some preprocessor definition. If you have a #ifdef _DEBUG statement at the top of your file, post it here (completely) so we can have a look.


        Cédric Moonen Software developer
        Charting control

        F Offline
        F Offline
        FredrickNorge
        wrote on last edited by
        #6

        ok, ive tried without the #ifdef _DEBUG #include "stdafx.h" #include "resource.h" #include "Dialog1.h" #include "Dialog2.h" #include "assert.h" #include #include "Dialog3.h" #include #include /* Needed only for _O_RDWR definition */ #include #include #include "EmbeddedDialogDlg.h" #include "QuickMissLoadWriteEdit.h" #include #include "string.h" #include #include using namespace std; #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif code comes here

        C D 2 Replies Last reply
        0
        • F FredrickNorge

          ok, ive tried without the #ifdef _DEBUG #include "stdafx.h" #include "resource.h" #include "Dialog1.h" #include "Dialog2.h" #include "assert.h" #include #include "Dialog3.h" #include #include /* Needed only for _O_RDWR definition */ #include #include #include "EmbeddedDialogDlg.h" #include "QuickMissLoadWriteEdit.h" #include #include "string.h" #include #include using namespace std; #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif code comes here

          C Offline
          C Offline
          Cedric Moonen
          wrote on last edited by
          #7

          Mmmh, I don't see really the problem here. Anyway, you are mixing deprecated header files with new ones. Remove all the include with a .h for the stadard library (stdio,io,string). I don't think this will solve the problem but check that first.


          Cédric Moonen Software developer
          Charting control

          F 1 Reply Last reply
          0
          • C Cedric Moonen

            Mmmh, I don't see really the problem here. Anyway, you are mixing deprecated header files with new ones. Remove all the include with a .h for the stadard library (stdio,io,string). I don't think this will solve the problem but check that first.


            Cédric Moonen Software developer
            Charting control

            F Offline
            F Offline
            FredrickNorge
            wrote on last edited by
            #8

            ok, thanks anyway :)

            1 Reply Last reply
            0
            • F FredrickNorge

              I use vs2005, when i want to debug my mfc app with #include fstream i get a endless list of problems refering to the xdebug(32)file. A few errors: 1>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xdebug(32) : warning C4229: anachronism used : modifiers on data are ignored 1>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xdebug(32) : error C2365: 'operator new' : redefinition; previous definition was 'function' 1>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xdebug(32) : error C2078: too many initializers 1>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xdebug(32) : error C2440: 'initializing' : cannot convert from 'int' to 'void *' When i do a release however, everything works just fine... any sugestions? - Fred -- modified at 12:26 Tuesday 18th July, 2006

              M Offline
              M Offline
              Maxwell Chen
              wrote on last edited by
              #9

              FredrickNorge wrote:

              vs2005, when i want to debug my mfc app with #include fstream

              FredrickNorge wrote:

              1>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xdebug(32)

              Generally speaking, in a MFC/VS2005 project of Debug configuration, the version of operator new being invoked is: "afxmem.cpp" line 59,

              void* __cdecl operator new(size_t nSize, LPCSTR lpszFileName, int nLine)
              {
              return ::operator new(nSize, _NORMAL_BLOCK, lpszFileName, nLine);
              }

              And then "afxmem.cpp" line 393,

              void* __cdecl operator new(size_t nSize, int nType, LPCSTR lpszFileName, int nLine)
              {
              #ifdef _AFX_NO_DEBUG_CRT
              UNUSED_ALWAYS(nType);
              UNUSED_ALWAYS(lpszFileName);
              UNUSED_ALWAYS(nLine);
              return ::operator new(nSize);
              #else
              void* pResult;
              #ifdef _AFXDLL
              _PNH pfnNewHandler = _pfnUninitialized;
              #endif
              for (;;)
              {
              pResult = _malloc_dbg(nSize, nType, lpszFileName, nLine);
              if (pResult != NULL)
              return pResult;

              #ifdef _AFXDLL
              if (pfnNewHandler == _pfnUninitialized)
              {
              AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();
              pfnNewHandler = pState->m_pfnNewHandler;
              }
              if (pfnNewHandler == NULL || (*pfnNewHandler)(nSize) == 0)
              break;
              #else
              if (_afxNewHandler == NULL || (*_afxNewHandler)(nSize) == 0)
              break;
              #endif
              }
              return pResult;
              #endif
              }


              Maxwell Chen -- modified at 14:01 Tuesday 18th July, 2006

              F 1 Reply Last reply
              0
              • M Maxwell Chen

                FredrickNorge wrote:

                vs2005, when i want to debug my mfc app with #include fstream

                FredrickNorge wrote:

                1>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xdebug(32)

                Generally speaking, in a MFC/VS2005 project of Debug configuration, the version of operator new being invoked is: "afxmem.cpp" line 59,

                void* __cdecl operator new(size_t nSize, LPCSTR lpszFileName, int nLine)
                {
                return ::operator new(nSize, _NORMAL_BLOCK, lpszFileName, nLine);
                }

                And then "afxmem.cpp" line 393,

                void* __cdecl operator new(size_t nSize, int nType, LPCSTR lpszFileName, int nLine)
                {
                #ifdef _AFX_NO_DEBUG_CRT
                UNUSED_ALWAYS(nType);
                UNUSED_ALWAYS(lpszFileName);
                UNUSED_ALWAYS(nLine);
                return ::operator new(nSize);
                #else
                void* pResult;
                #ifdef _AFXDLL
                _PNH pfnNewHandler = _pfnUninitialized;
                #endif
                for (;;)
                {
                pResult = _malloc_dbg(nSize, nType, lpszFileName, nLine);
                if (pResult != NULL)
                return pResult;

                #ifdef _AFXDLL
                if (pfnNewHandler == _pfnUninitialized)
                {
                AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();
                pfnNewHandler = pState->m_pfnNewHandler;
                }
                if (pfnNewHandler == NULL || (*pfnNewHandler)(nSize) == 0)
                break;
                #else
                if (_afxNewHandler == NULL || (*_afxNewHandler)(nSize) == 0)
                break;
                #endif
                }
                return pResult;
                #endif
                }


                Maxwell Chen -- modified at 14:01 Tuesday 18th July, 2006

                F Offline
                F Offline
                FredrickNorge
                wrote on last edited by
                #10

                ok i tried to overide the calls, no luck :( . What ive done for now though, is commented the verry brief code that actualy use fstream when i debug, and uncomment it for the final release. Works ok for now...

                M 1 Reply Last reply
                0
                • F FredrickNorge

                  ok i tried to overide the calls, no luck :( . What ive done for now though, is commented the verry brief code that actualy use fstream when i debug, and uncomment it for the final release. Works ok for now...

                  M Offline
                  M Offline
                  Maxwell Chen
                  wrote on last edited by
                  #11

                  For this kind of problem, sometimes looking at the compilation log message may help. For example when you have such compilation output message as below:

                  Compiling ...
                  stdafx.cpp
                  test1.cpp
                  test2.cpp
                  test3.cpp
                  e:\wrkshp\test3.cpp(102) : error Cxxxx: blah blah blah
                  test4.cpp
                  test5.cpp
                  Test - 1 error(s), 0 warning(s)

                  Then you may try to back trace those existing definitions by looking at the included headers (and the related compilation units) in the last compilation (eg: test3.cpp) unit wherein errors are found.


                  Maxwell Chen

                  F 1 Reply Last reply
                  0
                  • F FredrickNorge

                    ok, ive tried without the #ifdef _DEBUG #include "stdafx.h" #include "resource.h" #include "Dialog1.h" #include "Dialog2.h" #include "assert.h" #include #include "Dialog3.h" #include #include /* Needed only for _O_RDWR definition */ #include #include #include "EmbeddedDialogDlg.h" #include "QuickMissLoadWriteEdit.h" #include #include "string.h" #include #include using namespace std; #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif code comes here

                    D Offline
                    D Offline
                    David Crow
                    wrote on last edited by
                    #12

                    FredrickNorge wrote:

                    #include <assert.h> #include <Windows.h> #include <io.h> #include <fcntl.h> /* Needed only for _O_RDWR definition */ #include <share.h> #include <stdio.h> #include <iostream> #include <string.h> #include <string> #include <fstream>

                    Why don't you have these in the stdafx.h file?


                    "Money talks. When my money starts to talk, I get a bill to shut it up." - Frank

                    "Judge not by the eye but by the heart." - Native American Proverb

                    1 Reply Last reply
                    0
                    • M Maxwell Chen

                      For this kind of problem, sometimes looking at the compilation log message may help. For example when you have such compilation output message as below:

                      Compiling ...
                      stdafx.cpp
                      test1.cpp
                      test2.cpp
                      test3.cpp
                      e:\wrkshp\test3.cpp(102) : error Cxxxx: blah blah blah
                      test4.cpp
                      test5.cpp
                      Test - 1 error(s), 0 warning(s)

                      Then you may try to back trace those existing definitions by looking at the included headers (and the related compilation units) in the last compilation (eg: test3.cpp) unit wherein errors are found.


                      Maxwell Chen

                      F Offline
                      F Offline
                      FredrickNorge
                      wrote on last edited by
                      #13

                      will do, thanks for all the inputt Maxwell Chen ;)

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups