頭文件
#pragma once
#include <iostream>
using namespace std;
typedef unsigned char uchar;
typedef unsigned short ushort;
class CM_message
{
public:
CM_message();
virtual ~CM_message();
private:
static const int m_ihead_len = 2;
static const int m_imax_body_len = 2048 - 2;
static const int m_iformat_len = 8;
std::size_t m_ibody_len;
std::size_t m_ioff_set;
static const char * const m_szformat_str;
uchar m_szdata[m_ihead_len + m_imax_body_len];
};
實現文件
#include "pch.h"
#include "CM_message.h"
//定義
const char* const CM_message::m_szformat_str = "12345678";
const int CM_message::m_ihead_len;
const int CM_message::m_imax_body_len;
const int CM_message::m_iformat_len;
CM_message::CM_message()
{
std::memset(m_szdata, 0, m_ihead_len + m_imax_body_len);
m_ibody_len = 0;
m_ioff_set = 0;
}
CM_message::~CM_message()
{
}
這里要說的是uchar m_szdata[m_ihead_len + m_imax_body_len];由這個引出static const int m_imax_body_len = 2048 - 2;
有說static const int m_imax_body_len = 2048 - 2;叫聲明,在實現文件里的叫定義
如果不在實現文件里進行定義,鏈接是會報錯,實際在VS2017環境里,並沒有報錯。我發現“我笑痴狂”的博客里也說了linux下用GCC編譯,也不會報錯。