Chr*_*bek 11 c++ automation iostream code-generation generator
是否有工具为结构或类自动生成ostream <<运算符?
输入(取自一个Debug-Print函数来统治它们):
typedef struct ReqCntrlT /* Request control record */
{
int connectionID;
int dbApplID;
char appDescr[MAX_APPDSCR];
int reqID;
int resubmitFlag;
unsigned int resubmitNo;
char VCIver[MAX_VCIVER];
int loginID;
} ReqCntrlT;
Run Code Online (Sandbox Code Playgroud)
输出:
std::ostream& operator <<(std::ostream& os, const ReqCntrlT& r)
{
os << "reqControl { "
<< "\n\tconnectionID: " << r.connectionID
<< "\n\tdbApplID: " << r.dbApplID
<< "\n\tappDescr: " << r.appDescr
<< "\n\treqID: " << r.reqID
<< "\n\tresubmitFlag: " << r.resubmitFlag
<< "\n\tresubmitNo: " << r.resubmitNo
<< "\n\tVCIver: " << r.VCIver
<< "\n\tloginID: " << r.loginID
<< "\n}";
return os;
}
Run Code Online (Sandbox Code Playgroud)
任何工具都可以,Python/Ruby脚本将是首选.
我确实从两个方面理解了你的问题。
如果您想生成程序的自动状态报告,我建议您检查Boost.Serialization。但是,作为第一步或为了获得灵感,它不会在编译时生成代码。下面的代码将帮助您生成 xml 或 txt 文件以供您阅读。
typedef struct ReqCntrlT /* Request control record */
{
int connectionID;
int dbApplID;
char appDescr[MAX_APPDSCR];
int reqID;
int resubmitFlag;
unsigned int resubmitNo;
char VCIver[MAX_VCIVER];
int loginID;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & connectionID;
ar & reqID;
...
}
} ReqCntrlT;
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅教程:http://www.boost.org/doc/libs/1_49_0/libs/serialization/doc/index.html
如果您只是尝试通过给出参数名称来“编写”代码。那么你应该看看 python 或 perl 中的正则表达式。该解决方案的主要默认设置是您的结构处于“离线”状态,即每次更改某些内容时都必须运行它。
伯努瓦.
归档时间: |
|
查看次数: |
1929 次 |
最近记录: |