error: expected primary-expression before ‘if’

nwaicaethi

here is my code, I don't know where is wrong near 'if', and what is "primary-expression" in c?

xml_parser.h

#define xpath(smth, exp) if (sizeof(*smth) == sizeof(xmlNode)) { xpath_node((xml_node_ptr)smth, exp); } else{ xpath_doc((xml_doc_ptr)smth, exp); }

xml_node_ptr *xpath_node(xml_node_ptr n, str exp);

xml_node_ptr *xpath_doc(xml_doc_ptr n, str exp);

xml_parser_test.cpp

TEST_F(XmlParserTest, xpath2) {
    xml_node_ptr n = xpath(d, "/html/body");
    xpath(n, "/div");
}

here is my output:

/home/roroco/Dropbox/rbs/ro_sites/c/xml_parser_test.cpp: In member function ‘virtual void XmlParserTest_xpath2_Test::TestBody()’:
/home/roroco/Dropbox/rbs/ro_sites/c/xml_parser.h:17:26: error: expected primary-expression before ‘if’
 #define xpath(smth, exp) if (sizeof(*smth) == sizeof(xmlNode)) { xpath_node((xml_node_ptr)smth, exp); } else{ xpath_doc((xml_doc_ptr)smth, exp); }
                          ^
/home/roroco/Dropbox/rbs/ro_sites/c/xml_parser_test.cpp:26:22: note: in expansion of macro ‘xpath’
     xml_node_ptr n = xpath(d, "/html/body");
                  ^

my full source is here

Michael Albers

Your code is pretty much being expanded to

xml_node_ptr n = if (sizeof(*d) == sizeof(xmlNode)) { xpath_node((xml_node_ptr)d, "/html/body"); } else{ xpath_doc((xml_doc_ptr)d, "/html/body"); }

by the preprocessor. Pretty obvious that's wrong. To answer your second question, primary-expression is the expected non-terminal in the C++ grammar. The primary expression is something like arithmetic, function calls, etc.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

error: expected primary-expression before ‘int’

From Dev

error expected primary-expression before ';' token

From Dev

error: expected primary-expression before ‘)’ token

From Dev

error: expected primary-expression before '>' token

From Dev

error : expected primary expression before '.' token

From Dev

error: expected primary-expression before ‘(’ token

From Dev

error: expected primary-expression before '}' token

From Dev

Error: expected primary expression before '.' token

From Dev

Error: expected primary expression

From Dev

expected primary-expression before '*'?

From Dev

primary expression expected before token

From Dev

expected primary-expression before '*'?

From Dev

Expected primary expression before ';' token

From Dev

error: expected primary-expression before ')' token (C)

From Java

Cannot compile: error: expected primary-expression before '(' token

From Dev

Code Blocks C++ Error expected primary expression before enum

From Dev

C++ Error - expected primary-expression before '.' token|

From Dev

C++ error: expected primary-expression before ‘[’ token

From Dev

C++ error: expected primary-expression before 'int'

From Dev

C++ Error - expected primary-expression before '.' token|

From Dev

expected primary-expression before 'char' error message

From Dev

Calling pthread_create error - expected primary expression before 'void'

From Dev

C++ error: expected primary-expression before '(' token

From Dev

error: expected primary-expression before ']' token with struct

From Dev

template error expected primary-expression before '>' token

From Dev

expected primary-expression before ' ' token simple error

From Dev

Expected primary-expression before various tokens

From Dev

expected primary-expression before '!=' token

From Dev

expected primary-expression before ‘const’ errors

Related Related

  1. 1

    error: expected primary-expression before ‘int’

  2. 2

    error expected primary-expression before ';' token

  3. 3

    error: expected primary-expression before ‘)’ token

  4. 4

    error: expected primary-expression before '>' token

  5. 5

    error : expected primary expression before '.' token

  6. 6

    error: expected primary-expression before ‘(’ token

  7. 7

    error: expected primary-expression before '}' token

  8. 8

    Error: expected primary expression before '.' token

  9. 9

    Error: expected primary expression

  10. 10

    expected primary-expression before '*'?

  11. 11

    primary expression expected before token

  12. 12

    expected primary-expression before '*'?

  13. 13

    Expected primary expression before ';' token

  14. 14

    error: expected primary-expression before ')' token (C)

  15. 15

    Cannot compile: error: expected primary-expression before '(' token

  16. 16

    Code Blocks C++ Error expected primary expression before enum

  17. 17

    C++ Error - expected primary-expression before '.' token|

  18. 18

    C++ error: expected primary-expression before ‘[’ token

  19. 19

    C++ error: expected primary-expression before 'int'

  20. 20

    C++ Error - expected primary-expression before '.' token|

  21. 21

    expected primary-expression before 'char' error message

  22. 22

    Calling pthread_create error - expected primary expression before 'void'

  23. 23

    C++ error: expected primary-expression before '(' token

  24. 24

    error: expected primary-expression before ']' token with struct

  25. 25

    template error expected primary-expression before '>' token

  26. 26

    expected primary-expression before ' ' token simple error

  27. 27

    Expected primary-expression before various tokens

  28. 28

    expected primary-expression before '!=' token

  29. 29

    expected primary-expression before ‘const’ errors

HotTag

Archive