News:

Accounts with zero posts and zero activity during the last months will be deleted periodically to fight SPAM!

Main Menu

codecompletion warnings under ANSI Windows

Started by stahta01, March 08, 2011, 06:48:48 PM

Previous topic - Next topic

stahta01

I have about a dozen warnings when Compiling Code::Blocks under Windows with ANSI (Non Unicode) Build of trunk.
Does anybody care?

Edit: All dozen seem to be cause by the same line of code in the header.

Tim S.

Example warning below.
src\plugins\codecompletion\parser\token.h|96|warning: format '%d' expects type 'int', but argument 4 has type 'long int'|

Patch

Index: src/plugins/codecompletion/parser/token.h
===================================================================
--- src/plugins/codecompletion/parser/token.h (revision 7041)
+++ src/plugins/codecompletion/parser/token.h (working copy)
@@ -88,7 +88,7 @@
         {
             const long totalTime = it->first->m_StopWatch.Time();
             wxString log;
-            log.Printf(_T("\"%s\" used time is %d minute(s), %ld.%03ld seconds; call times is %d."),
+            log.Printf(_T("\"%s\" used time is %ld minute(s), %ld.%03ld seconds; call times is %d."),
                        it->second.wx_str(),
                        (totalTime / 60000),
                        (totalTime / 1000) % 60,
C Programmer working to learn more about C++.
On Windows 10 64 bit and Windows 11 64 bit.
--
When in doubt, read the CB WiKi FAQ. [url="http://wiki.codeblocks.org"]http://wiki.codeblocks.org[/url]

oBFusCATed

Me cares, on linux 64bit int is 32bit, long int is 64bit, so these are real errors, especially when used for non-logging purposes.
(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]

Jenna

There are more (potential dangerous or at least error-prone) warnings (compiled with -Wextra):
Quote
/home/jens/codeblocks-build/codeblocks.trunk/src/plugins/codecompletion/parser/tokenizer.h:358:36: warning: comparison of unsigned expression < 0 is always false
Quote/** Return (peek) the previous character */
    wxChar PreviousChar() const
    {
        if ( ((m_TokenIndex - 1) < 0) || (m_BufferLen==0) ) // (m_TokenIndex - 1) >= m_BufferLen can never be true
            return 0;

        return m_Buffer.GetChar(m_TokenIndex - 1);
    };
and
Quote
/home/jens/codeblocks-build/codeblocks.trunk/src/plugins/codecompletion/parser/tokenizer.h:391:51: warning: comparison of unsigned expression >= 0 is always true
Quote
    /** Check the previous char before EOL is a backslash */
    inline bool IsBackslashBeforeEOL()
    {
        wxChar last = PreviousChar();
        // if DOS line endings, we 've hit \r and we skip to \n...
        if (last == _T('\r') && (m_TokenIndex - 2 >= 0))
            return m_Buffer.GetChar(m_TokenIndex - 2) == _T('\\');
        return last == _T('\\');
    }

    unsigned int         m_TokenIndex;

MortenMacFly

#3
Quote from: jens on March 08, 2011, 07:34:37 PM
There are more (potential dangerous or at least error-prone) warnings (compiled with -Wextra):
So what about:
Quote/** Return (peek) the previous character */
   wxChar PreviousChar() const
   {
       if ( (m_TokenIndex==0) || (m_BufferLen==0) ) // (m_TokenIndex - 1) >= m_BufferLen can never be true
           return 0;

       return m_Buffer.GetChar(m_TokenIndex - 1);
   };
and
Quote
   /** Check the previous char before EOL is a backslash */
   inline bool IsBackslashBeforeEOL()
   {
       wxChar last = PreviousChar();
       // if DOS line endings, we 've hit \r and we skip to \n...
       if (last == _T('\r') && (m_TokenIndex > 1))
           return m_Buffer.GetChar(m_TokenIndex - 2) == _T('\\');
       return last == _T('\\');
   }
???
Compiler logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
C::B Manual: [url="https://www.codeblocks.org/docs/main_codeblocks_en.html"]https://www.codeblocks.org/docs/main_codeblocks_en.html[/url]
C::B FAQ: [url="https://wiki.codeblocks.org/index.php?title=FAQ"]https://wiki.codeblocks.org/index.php?title=FAQ[/url]