我正在使用以下标题定义。
finstrumentor.hpp
#ifndef _FINSTRUMENTOR_HPP_
#define _FINSTRUMENTOR_HPP_
#include "../../../api/probe_API.hpp"
#include <cstdint>
extern Instrumentor* INSTRUMENTOR_INSTANCE;
typedef void (*instrumentation_func)(uint16_t);
class Probe_Info {
public :
uint8_t* patch_addr;
uint8_t size;
};
class Statistics {
public:
uint64_t addr;
uint64_t count;
};
class Finstrumentor : public Instrumentor {
protected :
void (*prolog_func)(uint16_t);
void (*epilog_func)(uint16_t);
public :
Finstrumentor(instrumentation_func prolog_func, instrumentation_func epilog_
void initialize(Instrumentor* inst);
virtual ~Finstrumentor();
};
/* Global Data */
typedef std::unordered_map<int, std::list<Probe_Info*>*> probe_map;
extern probe_map probe_info;
typedef std::map<uint64_t, uint16_t> func_table;
extern func_table functions;
extern uint16_t func_id_counter;
Statistics* global_stats;
#endif /* _FINSTRUMENTOR_HPP_ */
当我包含此文件时,我在编译期间收到以下错误。
In file included from ../src/instrumentor.cpp:4:
../src/finstrumentor.hpp: At global scope:
../src/finstrumentor.hpp:43: error: expected initializer before ‘<’ token
../src/finstrumentor.hpp:44: error: ‘probe_map’ does not name a type
../src/finstrumentor.hpp:46: error: expected initializer before ‘<’ token
../src/finstrumentor.hpp:47: error: ‘func_table’ does not name a type
../src/cyg_functions.cpp:16: error: ‘probe_map’ does not name a type
../src/cyg_functions.cpp:17: error: ‘func_table’ does not name a type
答案 0 :(得分:2)
您还没有包含定义list
,map
和unordered_map
的标头。
#include <list>
#include <map>
#include <unordered_map>
另外,您不应该像_FINSTRUMENTOR_HPP_
一样使用reserved names。你应该(至少)从头开始删除下划线。