Page 1 of 2 12 LastLast
Results 1 to 20 of 29

Thread: error: expected unqualified-id before numeric constant

  1. #1
    Join Date
    Feb 2007
    Posts
    32
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default error: expected unqualified-id before numeric constant

    I am facing a strange problem, the following code was running successfully on Windows but when I tried to compile the same in LINUX

    QKeyEvent *e=new QKeyEvent(QEvent::KeyPress,65,Qt::NoModifier,QStri ng("> "));

    I end up with the following error :

    error: expected unqualified-id before numeric constant

    Though I tried including
    #include <QtCore/QEvent>
    #include <QtGui/QKeyEvent>

    It didn't work.

    Any Suggestions are welcome.
    Thanks a ton

  2. #2
    Join Date
    Feb 2006
    Location
    Romania
    Posts
    2,744
    Thanks
    8
    Thanked 541 Times in 521 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    Qt Code:
    1. [COLOR=#000000][/COLOR]QKeyEvent ( Type type, int key, Qt::KeyboardModifiers modifiers, const QString & text = QString(), bool autorep = false, ushort count = 1 )
    To copy to clipboard, switch view to plain text mode 
    The third parameter is a reference to a QString.
    You were passing a reference to a temporary object. GCC does not allow this.

    Use:
    Qt Code:
    1. QString s = ">";
    2. QKeyEvent *e=new QKeyEvent(QEvent::KeyPress,65,Qt::NoModifier, s );
    To copy to clipboard, switch view to plain text mode 
    Regards

  3. #3
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: error: expected unqualified-id before numeric constant

    Are you sure Marcel? My gcc (4.1.2) allows it just fine:
    Qt Code:
    1. #include <QString>
    2. #include <QtDebug>
    3.  
    4. void func(const QString &s){
    5. qDebug() << s;
    6. }
    7.  
    8. int main(){
    9. func(QString("testing"));
    10. return 0;
    11. }
    To copy to clipboard, switch view to plain text mode 

    Try casting Qt::NoModifier to Qt::KeyboardModifiers. Using Qt::Key_Greater instead of 65 is advised as well.

  4. #4
    Join Date
    Feb 2006
    Location
    Romania
    Posts
    2,744
    Thanks
    8
    Thanked 541 Times in 521 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    OK. It works with const temp objects because the compiler is sure they won't be modified inside the function.
    I'm using:
    Target: i686-apple-darwin8
    Configured with: /private/var/tmp/gcc/gcc-5363.obj~28/src/configure --disable-checking -enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/ --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib --build=powerpc-apple-darwin8 --with-arch=nocona --with-tune=generic --program-prefix= --host=i686-apple-darwin8 --target=i686-apple-darwin8
    Thread model: posix
    gcc version 4.0.1 (Apple Computer, Inc. build 5363)
    Try removing the const.

    Regards

  5. #5
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: error: expected unqualified-id before numeric constant

    Obviously if you remove "const" it won't work

  6. #6
    Join Date
    Feb 2007
    Posts
    32
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    Hi marcel,
    I tried your code but it didn't work

  7. #7
    Join Date
    Feb 2006
    Location
    Romania
    Posts
    2,744
    Thanks
    8
    Thanked 541 Times in 521 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    Good!
    Try Wysota's now.

  8. #8
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: error: expected unqualified-id before numeric constant

    It probably won't work either I didn't test it, I was just guessing, but go ahead and take a shot at it.

  9. #9
    Join Date
    Feb 2006
    Location
    Romania
    Posts
    2,744
    Thanks
    8
    Thanked 541 Times in 521 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    Quote Originally Posted by wysota View Post
    Obviously if you remove "const" it won't work
    Yes, but my point was that on Win ( with the ms compiler ) does work.

    Regards

  10. #10
    Join Date
    Feb 2007
    Posts
    32
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    Hi Marcel,
    Could you find the solution for this?

  11. #11
    Join Date
    Feb 2006
    Location
    Romania
    Posts
    2,744
    Thanks
    8
    Thanked 541 Times in 521 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    What else have you included?
    Do you get similar errors in other parts of the code?

    Try including <QKeyEvent>, or event <QtGui>, to see if it works.

    Regards

  12. #12
    Join Date
    Feb 2007
    Posts
    32
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    Ya I tried incluing that, but it didn't work

  13. #13
    Join Date
    Feb 2006
    Location
    Oslo, Norway
    Posts
    6,264
    Thanks
    36
    Thanked 1,519 Times in 1,389 Posts
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows Symbian S60 Maemo/MeeGo

    Default Re: error: expected unqualified-id before numeric constant

    Is the space in the middle of "QStri ng" just a copy paste problem? Could attach the whole file or something?
    J-P Nurmi

  14. #14
    Join Date
    Feb 2007
    Posts
    32
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    No that is not the problem.

  15. #15
    Join Date
    Feb 2007
    Posts
    32
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    Hi all,
    Was my question absurd ?
    I am unable to find the clue for this, this is a big issue in my application. The same was runnig fine on Windows but unable to compile on LINUX

  16. #16
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: error: expected unqualified-id before numeric constant

    Could we see the exact and complete (including file name and line numbers) error message?

  17. #17
    Join Date
    Feb 2007
    Posts
    32
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    MDIWindow2D.cxx:1665: error: expected unqualified-id before numeric constant

  18. #18
    Join Date
    Feb 2006
    Location
    Romania
    Posts
    2,744
    Thanks
    8
    Thanked 541 Times in 521 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    Can you post the entire code section?
    Let's say lines 1660 - 1680?

  19. #19
    Join Date
    Feb 2006
    Location
    Romania
    Posts
    2,744
    Thanks
    8
    Thanked 541 Times in 521 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    Hey, I think I found something.
    Take a look at this article: http://braincore.blogspot.com/2005_11_01_archive.html

    I'm talking about:
    cpp: preprocessing can bite

    Ready for a new type of post? cpp? What is it? Well, KDE and Qt are primarily written in C++. I do have experience in that language. And sometimes a question pops up that begs for an answer.So here goes.
    qnamespace.h:833: error: expected identifier before numeric constant
    qnamespace.h:833: error: expected unqualified-id before numeric constant
    Say what? Pretty cryptic error message. So, what's happening in qnamespace.h at that particular line?// documented in qcursor.cpp
    enum CursorShape {
    ArrowCursor,
    UpArrowCursor,
    CrossCursor,
    ....
    Line 833 is the one that starts with the enum. At this point, the problem still evaded me. So, let's have a look at the source that is compiled. It contained among others these lines#include "config.h" // HAVE_LIBXSS

    #ifdef HAVE_LIBXSS // Idle detection.
    #include <X11/Xlib.h>
    #include <X11/Xutil.h>
    #include <X11/extensions/scrnsaver.h>
    #include <fixx11h.h>
    #endif // HAVE_LIBXSS

    #include <kapplication.h>Well, after undefining HAVE_LIBXSS after the inclusion of the config header, the error went away. Hmmm. Could it be that somewhere in the X11 headers the name CursorShape is used? So, fire up a konsole, navigate to the directory holding the relevant headers and execute find . -type f | xargs grep CursorShapewhich turns up#define CursorShape 0 /* largest size that can be displayed */Aha! The plot thickens. Because when this is preprocessed before the enum in qnamespace.h, that particular enum will come out like enum 0 {... which is obviously not a good thing.This is a classic case of how preprocessing can bite a programmer and yield an error message that seems totally unrelated to what is actually wrong. So, the solution is to change the order in which headers are included. In this particular case that meant moving the X11 headers to the end of the #include stanzas.
    Now, before you start falling all over me that this is not a solution, yes, I know it is not a proper solution. I'm aware of the fact that if one uses CursorShape after having included the X11 headers, I will get exactly the same trouble. In this case, that didn't happen. And for now, the code works.
    Update -- I should have known. No, this piece is not about how to fix it, it is about how preprocessing can bite you. And yes - #undef CursorShape would be an alternate approach but equally bad. And no - including fixx11.h didn't.
    I'm not saying that you have exactly the same problem but it's worth investigating further.

    Judging from what I've read about this error, it appears because there is an already processed macro with the same name of a symbol you're using in your file.

    So it would be better to post some code, maybe someone spots the error.

    Regards
    Last edited by marcel; 28th May 2007 at 17:43.

  20. #20
    Join Date
    Feb 2007
    Posts
    32
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: error: expected unqualified-id before numeric constant

    Hi marcel,
    It is not possible to put the whole code.

    void MyTextBox::ProcessText()
    {
    char command[]="Line",num[10];
    int pnts[20];
    int k=0,j=0;

    for(int i=0;i<str.length();i++)
    { QChar ch=this->str.at(i);
    if(i<4)
    command[i]=ch.toAscii();

    if(isdigit(ch.toAscii()))
    num[j++]=ch.toAscii();

    if( i>4 && (ch == Qt::Key_Comma || ch==Qt::Key_Space ) )
    { num[j]=0;
    pnts[k++]=atoi(num);
    j=0;
    }
    }
    num[j]=0;
    pnts[k]=atoi(num);



    QString s="";
    s.append(command);

    QPoint P[]={ QPoint(pnts[0],pnts[1]), QPoint(pnts[2],pnts[3]) };

    if(s=="Line")
    myView->DrawLine(P[0],P[1]);
    else if(s=="Circ")
    myView->DrawCircle(P[0],pnts[2],pnts[3]);
    else if(s=="Bezi")
    { if((k+1)%2==0)
    myView->DrawBezier(pnts,k+1);
    else
    {
    QMessageBox *p=new QMessageBox(this);
    p->setText("Invalid Input, Check Help");
    p->setIcon(QMessageBox::Information);
    p->show();
    }
    }
    else
    {
    QMessageBox *p=new QMessageBox();
    p->setText("No such command exist, Check Help");
    p->setIcon(QMessageBox::Information);
    p->show();
    }

    str="";
    prevstr="";
    QKeyEvent *e=new QKeyEvent(QEvent::KeyPress,65,Qt::NoModifier,QStri ng("> "));
    keyPressEvent(e);



    }

    where "MyTextBox" is inherited from QTextBox

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.