分类

如何防止Linux多重定义?

浏览量:305 日期:2014-08-02 10:25:09
内容介绍

  在Linux下写代码,自己写makefile,结果编译时出现重定义问题,开始检查发现每个头文件都有使用条件编译来防止重定义,迷茫了一会,看代码,发现在一个头文件中定义一个变量时引发这个问题,将此变量声明为static静态变量后就解决问题了,故以后最好将要使用的全局变量单独写到一个头文件中,或者声明为静态变量。

  

 

 

  


#ifndef __POLICY_H_#define __POLICY_H_#include /*class policy{public:  void policy_handle(char* buffer)=0;   void notify(long int new_bps)=0;  long int get_bps=0; long int get_old_bps=0; };*/class openflow_policy{public:  openflow_policy();  virtual void policy_handle(char* buffer);  virtual void notify(long int new_bps);  virtual long int get_bps();  virtual long int get_old_bps(); private: long int bps; long int old_bps;};#endif

 

  发生重定义的文件。将openflow_policy* 变量声明为static即可。

  

 

 

  #ifndef __THREAD_FUNC_H_#define __THREAD_FUNC_H_#include "../server_client/Tcp_Server_Client.h"using std::cout;using std::endl;const int Listen_Port=2344;const int Dest_Port=2345;static openflow_policy* my_openflow_policy=new openflow_policy(); void* start_server(void* args); void* start_client(void* args);#endif

相关阅读
手机版 | 电脑版
Copyright @ 2021 豆豆系统