error: expected primary-expression before ‘if’
error: expected primary-expression before ‘if’
这是我的代码,我不知道'if'附近哪里错了,c中的"primary-expression"是什么?
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");
}
这是我的输出:
/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");
^
我的完整来源是 here
您的代码几乎可以扩展到
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"); }
由预处理器。很明显这是错误的。要回答你的第二个问题, primary-expression
是 C++ 语法中预期的非终结符。主要表达式是算术、函数调用等
这是我的代码,我不知道'if'附近哪里错了,c中的"primary-expression"是什么?
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");
}
这是我的输出:
/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");
^
我的完整来源是 here
您的代码几乎可以扩展到
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"); }
由预处理器。很明显这是错误的。要回答你的第二个问题, primary-expression
是 C++ 语法中预期的非终结符。主要表达式是算术、函数调用等