Linux 防止多重定义

在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即可。

Linux 防止多重定义_第1张图片

#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



你可能感兴趣的:(vlc)