亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于C++源代碼中取消名字空間(namespace)而保留原有功能的問題,該怎么解決?

關于C++源代碼中取消名字空間(namespace)而保留原有功能的問題,該怎么解決?

藍山帝景 2021-12-02 11:07:29
我有一些C++代碼庫的源代碼,里面有很多源文件,聲明了很多名字空間,實現的是比較簡單的功能,我想把其中所有的變量聲明、類、結構和函數都簡單放到一個頭文件(.h)和一個源文件(.cpp)中以便調用,取消其中所有的名字空間(namespace)。請問用什么思路以及軟件(代碼分析、代碼重構等軟件),通過什么方法和步驟可以實現這一目的?同時需保證編譯不會報錯。要是想內聯GRETA正則表達式模板類庫,就難嘍~
查看完整描述

2 回答

?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

參考一下:
就是把命名空間聲明與宏定義組合起來用
namespace nsdebug //名字空間nsdebug是在別的文件里定義的
{
int GetStringWidth(char* s);
int GetCellValue(int x,int y);
}

#define GetStringWidth nsdebug::GetStringWidth
#define GetCellValue nsdebug::GetCellValue
把這些個名字空間都加近來,再一一定義一個宏,做成一個新的頭文件。這樣的話不必修改原來代碼的任何內容。

查看完整回答
反對 回復 2021-12-07
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

我也曾遇到過這中問題,曾經也找到了解決方案,但是覺得不完美后來就不用了,不過可以給你參考一下:
就是把命名空間聲明與宏定義組合起來用
namespace nsdebug //名字空間nsdebug是在別的文件里定義的
{
int GetStringWidth(char* s);
int GetCellValue(int x,int y);
}

#define GetStringWidth nsdebug::GetStringWidth
#define GetCellValue nsdebug::GetCellValue
把這些個名字空間都加近來,再一一定義一個宏,做成一個新的頭文件。這樣的話不必修改原來代碼的任何內容。
不過后來我覺得用宏還是不穩心,東西多了次早會遇到宏陷阱,后來就廢棄了這種方法。



查看完整回答
反對 回復 2021-12-07
  • 2 回答
  • 0 關注
  • 875 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號