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. How to avoid warning LNK4224: /COMMENT is no longer supported

How to avoid warning LNK4224: /COMMENT is no longer supported

Scheduled Pinned Locked Moved C / C++ / MFC
tutorial
17 Posts 8 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 Offline
    M Offline
    mohindar_kks
    wrote on last edited by
    #1

    How to avoid warning LNK4224: /COMMENT is no longer supported; ignored in Visual 2005 .please reply me ASAP

    C N P 3 Replies Last reply
    0
    • M mohindar_kks

      How to avoid warning LNK4224: /COMMENT is no longer supported; ignored in Visual 2005 .please reply me ASAP

      C Offline
      C Offline
      CPallini
      wrote on last edited by
      #2

      What about removing the /COMMENT option from the linker command line (Project properties)? :)

      If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.

      1 Reply Last reply
      0
      • M mohindar_kks

        How to avoid warning LNK4224: /COMMENT is no longer supported; ignored in Visual 2005 .please reply me ASAP

        N Offline
        N Offline
        Nelek
        wrote on last edited by
        #3

        #pragma warning (disable: XXXX)

        Greetings. -------- M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson

        C 1 Reply Last reply
        0
        • M mohindar_kks

          How to avoid warning LNK4224: /COMMENT is no longer supported; ignored in Visual 2005 .please reply me ASAP

          P Offline
          P Offline
          Paresh Chitte
          wrote on last edited by
          #4

          You can also use /wd_n_ in project settings. Project | Properties | C/C++ | Command Line Disables the specified compiler warning where n is the compiler warning number. For example, /wd4326 disables compiler warning C4326. Please refer here[^] for more information.

          C 1 Reply Last reply
          0
          • N Nelek

            #pragma warning (disable: XXXX)

            Greetings. -------- M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson

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

            That's not really removing the source of the warning but just make it silent. Which is not really a good solution. Sure, you could do that with all your warnings but it is maybe better to find way it is complaining.


            Cédric Moonen Software developer
            Charting control [v1.2]

            N B 2 Replies Last reply
            0
            • P Paresh Chitte

              You can also use /wd_n_ in project settings. Project | Properties | C/C++ | Command Line Disables the specified compiler warning where n is the compiler warning number. For example, /wd4326 disables compiler warning C4326. Please refer here[^] for more information.

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

              Same as here[^]


              Cédric Moonen Software developer
              Charting control [v1.2]

              P 1 Reply Last reply
              0
              • C Cedric Moonen

                Same as here[^]


                Cédric Moonen Software developer
                Charting control [v1.2]

                P Offline
                P Offline
                Paresh Chitte
                wrote on last edited by
                #7

                You are correct Cedric. :) As per MSDN[^] "Treats all compiler warnings as errors. For a new project, it may be best to use /WX in all compilations; resolving all warnings will ensure the fewest possible hard-to-find code defects." Regards, Paresh.

                M 1 Reply Last reply
                0
                • C Cedric Moonen

                  That's not really removing the source of the warning but just make it silent. Which is not really a good solution. Sure, you could do that with all your warnings but it is maybe better to find way it is complaining.


                  Cédric Moonen Software developer
                  Charting control [v1.2]

                  N Offline
                  N Offline
                  Nelek
                  wrote on last edited by
                  #8

                  But there are some times that the warnings are not relevant or don't matter, due to the code. I.E. In the functions I added to the smartlist in my article: warning C4181: Auf Referenztyp angewendeter Qualifizierer wird ignoriert // In reference type the used qualifier will be ignored REASON: BOOL FindAndRemoveElement(const ARG_TYPE searchValue); warning C4018: '<=' : Conflict between signed and unsigned REASON: if (pInfo->m_nCurPage <= (nInPages + (1 * (m_nPrintSel & PRALL)))) warning C4244: 'argument' : Conversion of 'const double' in 'int', possible loose of data REASON: cbmGraphic.CreateCompatibleBitmap (pDC, 4 * GWIDTH, -4 * GHEIGHT); SOLUTION: casting to the correct typ, but dont needed, but in this case I wanna lose the decimals by truncating and the constants must be float/double for other places to be used. And I have about 90 times this warning warning C4308: Negative Ganzzahlkonstante in vorzeichenlosen Typ konvertiert //Conversion of negative integer constant in unsigned type REASON: file->Seek (-3 * sizeof (BYTE), CFile::current); So I use #pragma warning(disable:4244) #pragma warning(disable:4018) #pragma warning(disable:4181) and from 116 warnings I go to just 1 of them

                  Greetings. -------- M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson

                  C D 2 Replies Last reply
                  0
                  • N Nelek

                    But there are some times that the warnings are not relevant or don't matter, due to the code. I.E. In the functions I added to the smartlist in my article: warning C4181: Auf Referenztyp angewendeter Qualifizierer wird ignoriert // In reference type the used qualifier will be ignored REASON: BOOL FindAndRemoveElement(const ARG_TYPE searchValue); warning C4018: '<=' : Conflict between signed and unsigned REASON: if (pInfo->m_nCurPage <= (nInPages + (1 * (m_nPrintSel & PRALL)))) warning C4244: 'argument' : Conversion of 'const double' in 'int', possible loose of data REASON: cbmGraphic.CreateCompatibleBitmap (pDC, 4 * GWIDTH, -4 * GHEIGHT); SOLUTION: casting to the correct typ, but dont needed, but in this case I wanna lose the decimals by truncating and the constants must be float/double for other places to be used. And I have about 90 times this warning warning C4308: Negative Ganzzahlkonstante in vorzeichenlosen Typ konvertiert //Conversion of negative integer constant in unsigned type REASON: file->Seek (-3 * sizeof (BYTE), CFile::current); So I use #pragma warning(disable:4244) #pragma warning(disable:4018) #pragma warning(disable:4181) and from 116 warnings I go to just 1 of them

                    Greetings. -------- M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson

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

                    I think it is bad because you can miss important warnings (things that you didn't thought about). You should get rid of the warnings instead of silenting them. I only disable them on some rare occasions. C4181: why do you put the const keyword then ? If it will be ignored ? It let you think that it is used but it isn't so it can lead to confusion. Why don't you just remove it ? This will lead to the same result without warning. C4018: why do you mix signed and unsigned ? That probably results to a bad design. They don't have the same range so if you start with a signed number, stick to it. On some rare occasion you will need to mix them, but then use an explicit cast. C4244:

                    Nelek wrote:

                    SOLUTION: casting to the correct typ, but dont needed, but in this case I wanna lose the decimals by truncating and the constants must be float/double for other places to be used. And I have about 90 times this warning

                    Cast the complete block: (int)(4*GWIDTH)

                    Nelek wrote:

                    warning C4308: Negative Ganzzahlkonstante in vorzeichenlosen Typ konvertiert //Conversion of negative integer constant in unsigned type REASON: file->Seek (-3 * sizeof (BYTE), CFile::current);

                    That's typically one of the warning you shouldn't neglect, because your code is wrong. The warning tells you that it converts the -3 to an unsigned, so the result won't be what you expect. It does that because sizeof returns an unsigned type and so, when doing the multiplication your compiler will convert the -3 to unsigned type so that it can multiply both operands.


                    Cédric Moonen Software developer
                    Charting control [v1.2]

                    N 1 Reply Last reply
                    0
                    • P Paresh Chitte

                      You are correct Cedric. :) As per MSDN[^] "Treats all compiler warnings as errors. For a new project, it may be best to use /WX in all compilations; resolving all warnings will ensure the fewest possible hard-to-find code defects." Regards, Paresh.

                      M Offline
                      M Offline
                      mohindar_kks
                      wrote on last edited by
                      #10

                      How to remove the /COMMENT directory from the project settings

                      1 Reply Last reply
                      0
                      • C Cedric Moonen

                        That's not really removing the source of the warning but just make it silent. Which is not really a good solution. Sure, you could do that with all your warnings but it is maybe better to find way it is complaining.


                        Cédric Moonen Software developer
                        Charting control [v1.2]

                        B Offline
                        B Offline
                        bob16972
                        wrote on last edited by
                        #11

                        It makes sense from time to time. Just don't abuse it. It just that, a warning (not an error). The programmer goes and scrutinizes the code and makes a decision. If they deem the existing code sound, then disabling the warning for that specific chunk of code makes perfect sense. Make sure to turn the warning back on after the section of code in question that has been deemed by the programmer as fine. That way every future warning will need to be scrutinized by the programmer and they get to decide if it's a false alram or not. #pragma warning (disable: XXXX) // Some code that is deemed OK after reviewing warnings #pragma warning (default: XXXX)

                        N 1 Reply Last reply
                        0
                        • C Cedric Moonen

                          I think it is bad because you can miss important warnings (things that you didn't thought about). You should get rid of the warnings instead of silenting them. I only disable them on some rare occasions. C4181: why do you put the const keyword then ? If it will be ignored ? It let you think that it is used but it isn't so it can lead to confusion. Why don't you just remove it ? This will lead to the same result without warning. C4018: why do you mix signed and unsigned ? That probably results to a bad design. They don't have the same range so if you start with a signed number, stick to it. On some rare occasion you will need to mix them, but then use an explicit cast. C4244:

                          Nelek wrote:

                          SOLUTION: casting to the correct typ, but dont needed, but in this case I wanna lose the decimals by truncating and the constants must be float/double for other places to be used. And I have about 90 times this warning

                          Cast the complete block: (int)(4*GWIDTH)

                          Nelek wrote:

                          warning C4308: Negative Ganzzahlkonstante in vorzeichenlosen Typ konvertiert //Conversion of negative integer constant in unsigned type REASON: file->Seek (-3 * sizeof (BYTE), CFile::current);

                          That's typically one of the warning you shouldn't neglect, because your code is wrong. The warning tells you that it converts the -3 to an unsigned, so the result won't be what you expect. It does that because sizeof returns an unsigned type and so, when doing the multiplication your compiler will convert the -3 to unsigned type so that it can multiply both operands.


                          Cédric Moonen Software developer
                          Charting control [v1.2]

                          N Offline
                          N Offline
                          Nelek
                          wrote on last edited by
                          #12

                          Thanks for your answer. C4181: I didn't know that it would be ignored. I put that in const to avoid changes in the function by error, but if it is ignored... then it is useless. Erased and warnings away. C4018: casted in the places, warnings away C4244: casted in the places, change the return in a function and the warnings away C4308: changed to file->Seek (((UINT) -3) * sizeof (BYTE), CFile::current); is that correct? I want to go back in 3 bytes to reread the last block because it contains particular info that i need to start the next block

                          Greetings. -------- M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson

                          D 1 Reply Last reply
                          0
                          • B bob16972

                            It makes sense from time to time. Just don't abuse it. It just that, a warning (not an error). The programmer goes and scrutinizes the code and makes a decision. If they deem the existing code sound, then disabling the warning for that specific chunk of code makes perfect sense. Make sure to turn the warning back on after the section of code in question that has been deemed by the programmer as fine. That way every future warning will need to be scrutinized by the programmer and they get to decide if it's a false alram or not. #pragma warning (disable: XXXX) // Some code that is deemed OK after reviewing warnings #pragma warning (default: XXXX)

                            N Offline
                            N Offline
                            Nelek
                            wrote on last edited by
                            #13

                            I didn't know the how to enable them another time, thanks or the tip

                            Greetings. -------- M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson

                            1 Reply Last reply
                            0
                            • N Nelek

                              But there are some times that the warnings are not relevant or don't matter, due to the code. I.E. In the functions I added to the smartlist in my article: warning C4181: Auf Referenztyp angewendeter Qualifizierer wird ignoriert // In reference type the used qualifier will be ignored REASON: BOOL FindAndRemoveElement(const ARG_TYPE searchValue); warning C4018: '<=' : Conflict between signed and unsigned REASON: if (pInfo->m_nCurPage <= (nInPages + (1 * (m_nPrintSel & PRALL)))) warning C4244: 'argument' : Conversion of 'const double' in 'int', possible loose of data REASON: cbmGraphic.CreateCompatibleBitmap (pDC, 4 * GWIDTH, -4 * GHEIGHT); SOLUTION: casting to the correct typ, but dont needed, but in this case I wanna lose the decimals by truncating and the constants must be float/double for other places to be used. And I have about 90 times this warning warning C4308: Negative Ganzzahlkonstante in vorzeichenlosen Typ konvertiert //Conversion of negative integer constant in unsigned type REASON: file->Seek (-3 * sizeof (BYTE), CFile::current); So I use #pragma warning(disable:4244) #pragma warning(disable:4018) #pragma warning(disable:4181) and from 116 warnings I go to just 1 of them

                              Greetings. -------- M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson

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

                              Nelek wrote:

                              But there are some times that the warnings are not relevant or don't matter, due to the code.

                              Compiler warnings are always relevant, else they would not exist. :rolleyes:


                              "Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman

                              "To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne

                              N 1 Reply Last reply
                              0
                              • D David Crow

                                Nelek wrote:

                                But there are some times that the warnings are not relevant or don't matter, due to the code.

                                Compiler warnings are always relevant, else they would not exist. :rolleyes:


                                "Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman

                                "To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne

                                N Offline
                                N Offline
                                Nelek
                                wrote on last edited by
                                #15

                                You are right... I wrote it in a false way. :~

                                Greetings. -------- M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson

                                1 Reply Last reply
                                0
                                • N Nelek

                                  Thanks for your answer. C4181: I didn't know that it would be ignored. I put that in const to avoid changes in the function by error, but if it is ignored... then it is useless. Erased and warnings away. C4018: casted in the places, warnings away C4244: casted in the places, change the return in a function and the warnings away C4308: changed to file->Seek (((UINT) -3) * sizeof (BYTE), CFile::current); is that correct? I want to go back in 3 bytes to reread the last block because it contains particular info that i need to start the next block

                                  Greetings. -------- M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson

                                  D Offline
                                  D Offline
                                  DoomedOne
                                  wrote on last edited by
                                  #16

                                  Nelek wrote:

                                  C4308: changed to file->Seek (((UINT) -3) * sizeof (BYTE), CFile::current); is that correct? I want to go back in 3 bytes to reread the last block because it contains particular info that i need to start the next block

                                  Hi, in this case, the ((UINT)-3) will be converted to 3, advansing the position in the file instead of going back, the cast should be in the sizeof : file->Seek (-3 * (long)sizeof(BYTE), CFile::current);

                                  N 1 Reply Last reply
                                  0
                                  • D DoomedOne

                                    Nelek wrote:

                                    C4308: changed to file->Seek (((UINT) -3) * sizeof (BYTE), CFile::current); is that correct? I want to go back in 3 bytes to reread the last block because it contains particular info that i need to start the next block

                                    Hi, in this case, the ((UINT)-3) will be converted to 3, advansing the position in the file instead of going back, the cast should be in the sizeof : file->Seek (-3 * (long)sizeof(BYTE), CFile::current);

                                    N Offline
                                    N Offline
                                    Nelek
                                    wrote on last edited by
                                    #17

                                    :doh::doh: you are totally right. Thanks for avoiding me an assertion ;) EDIT: I executed the program with my first option and worked ok, but i have anyways changed it

                                    Greetings. -------- M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you “The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson

                                    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