好的變成習慣之標頭檔案編寫

2021-07-03 12:06:41 字數 2582 閱讀 7763

標頭檔案編寫:

1.#define max_sat_num 6

程式中經常用到的有意義的數字用巨集代替寫在標頭檔案開始處。

2.類設計

class

結構體對於變長的資料成員定義為u8 data[1];

例如#pragma pack(push)

#pragma pack(1)

typedef struct s_frame 

dataframe, * pdataframe;

#pragma pack(pop)

用的時候可以直接 pdataframe pframe = (pdataframe)pdata;

pframe->data即可得到資料域首位址。

注意dataframe基本上用不到因為該結構體用於指標型別

更有意義。

void* m_pcontex;

上下文指標的使用。為了避免a.h標頭檔案中想訪問b.h標頭檔案中的類物件,b.h標頭檔案中還想訪問a.h

標頭檔案中的物件這樣的情況出現交叉訪問的問題。b.h標頭檔案中包含a.h標頭檔案並定義乙個a m_a;資料

成員。而a.h中定義乙個void* m_pb;在b類初始化的時候將m_a.m_pb = this;即可。

這樣就解決了交叉訪問的問題。

或者在a.h中定義乙個容器vectorm_vdata;。b.cpp中收到資料直接放到m_vdata中,而a.pp中開

乙個執行緒不停的對m_vdata.size();進行判斷,只要有值就進行處理,處理後刪掉。要注意的是執行緒安全

問題。訪問m_vdata時要加鎖。

/**獲取4位元組crc演算法**/

多行注釋要以上面的格式書寫。第一行寫函式功能。空一行後面接著寫引數說明,返回值說明。

#pragma once

//dtea header

#include "stdafx.h"

#include "header.h"

#include <_datatype.h>

#include "mthandler.h"

#include

using namespace dtea;

#define max_sat_num 6  //支援衛星模擬器的最大個數,目前第一類模擬器1顆,第二類模擬器5顆,共6顆

namespace dtmtserver

//衛星模擬器的aos遙測資料接收介面,僅支援低速遙測

dtrefobjptr

m_refobjtm; 

dtlocalreportptr

m_refrptcadu;

dtlocalreportcbptr

m_ptbcadu;

dtlocalreportptr

m_refrptepdu;

dtlocalreportcbptr

m_ptbepdu;

//衛星模擬器的遙控注入函式介面

dtrefobjptr m_refobjtc;

dtlocalfuncptr m_pfunctc;

//本星scid

u8 m_lscid;

//位址同步字

u16 m_tc_addr;

//內外時頻狀態 0:內時頻 1:外時頻

u8 m_time_mode;

//模擬器狀態 0:正常 1:異常 2:靜默  3:其他

u8 m_state;

};sat_sim m_sats[max_sat_num];

protected:

virtual void setallfunctionhandler();

virtual void oninitialize1();

virtual void oninitialize2();

virtual void onclosing();

//report**服務引數

void repparam();

void startthrd();

void stopthrd();

//讀取某個檔案,將其中的內容以二進位制塊的形式返回

spreadfile(const string& filename);

protected:

//udp網路通訊

sp m_spengine;

spm_spsvr;

spm_spcon;

//綜保的ip位址和埠號

string

m_ipzb;

u16m_portzb;

//監控終端的ip位址和埠號

string

m_ipmt;

u16m_portmt;

//組播發送遙測資料的ip位址和埠號

string

m_ipmul;

u16m_portmul;

//監控服務執行狀態報告

dtea::dtreportiptr

m_rep_param;

//在物件關閉前需要設定為null,避免迴圈引用

spm_pthrepparam;

bool

m_brunningrepparam;

//工作路徑(配置檔案所在路徑)

string m_swkpath;};}

2 9編寫自己的標頭檔案

1.預編譯標頭檔案 1 新增乙個stdafx.h檔案 名字隨便取,這裡用了vs預設提供的名稱 在這個.h檔案裡include要使用的標頭檔案 一般是外部的庫,自己寫的不常變的標頭檔案也可以加進來 2 新增乙個stdafx.cpp檔案,並include stdafx.h 3 專案屬性 c c prec...

C語言標頭檔案的編寫

標頭檔案是一種文字檔案,使用文字編輯器將 編寫好之後,以副檔名 h儲存就行了。標頭檔案中一般放一些重複使用的 例如函式宣告,變數宣告,常數定義,巨集的定義等等。當使用 i nclude 語句將標頭檔案引用時,相當於將標頭檔案中所有內容,複製到 i nclude處。為了避免因為重複引用而導致的編譯錯誤...

如何編寫自己的標頭檔案

不多說直接進入主題 想要使用自己的標頭檔案,就需要自己建立乙個專案,在自己的 專案 裡面才能使用自己的標頭檔案 我是新手,說錯還望大佬指正 如何建立專案 建立完專案後就可以編寫自己的函式和標頭檔案了 1.建立主函式main 在專案位置右鍵新建即可,並重命名main 寫自己的標頭檔案,lyq.h ly...