2013-11-01 62 views
0

我有一個非常大的代碼,我錯誤地使用了unsigned而不是uint64_t。由於這個錯誤,我的代碼不適用於大於4字節的大值。現在我想澄清這個錯誤...但我不可能進入每個文件(有540個文件),並用uint64_t代替unsigned。有一些Linux命令或一些自動化的方法可能爲我做。替換文件內的文字

我只想uint64_t更換字unsigned。我不想像unsignedFunction這樣的文字替換爲uint64_t

編輯: 當我更換爲以下形式的功能:

static inline unsigned readUint32Aligned(const unsigned char* data) { return toHost(*reinterpret_cast<const unsigned*>(data)); } 

的轉換函數爲:

static inline uint64_t readUint32Aligned(const uint64_t char* data) { return toHost(*reinterpret_cast<const uint32_t*>(data)); } 

它給我的錯誤:

error: ‘data’ was not declared in this scope

除之外還有別的東西嗎,我可以替換,這可能適用於上述形式的功能?

對不起,它可能是一個錯字。

+2

使用編輯器,在文件實用程序中查找。搜索和替換。問題解決了 ! – P0W

+0

這個問題真的與編程有關嗎?您正在詢問文本替換問題/工具,而不是C/C++編程問題。 – Manu343726

+0

@Manu343726是的,它與編程相關,用uint64_t代替無符號雖然處理很大的值,但它會引發很多錯誤 –

回答

2

使用sed和模式s/\bunsigned\b/uint64_t/g

\b是有趣的一點。在regularl表達式中,它匹配單詞邊界。

+1

或所有文件: 'find。 -name「* .cpp」-exec sed -i「s/\ bunsigned \ b/uint64_t/g」'{}'\;' – P0W

+0

非常感謝您的幫助。但替換後恐怕...我最終得到了我編輯的問題中提到的錯誤。有沒有其他的出路 –

+0

@AliceEverett這只是一個提示,你沒有看到你的'unsigned'仍然存在。你知道爲什麼你會遇到錯誤,編譯器會告訴你所有的錯誤。 – P0W