2013-10-18 101 views
0

我創建了簡單的C++ Hello世界程序,然後我編譯它使用MSVC++,然後我看着可執行文件使用Notepad ++(我知道它不是最好的程序打開二進制文件,但我想要知道,如果有任何人類可讀的字符串)。我發現有字串裏面A cast to a smaller data type has caused a loss of data. If this was intentional, you should mask the source of the cast with the appropriate bitmask.奇怪的字符串在執行VC++

The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. 

什麼是那些字符串,他們從那裏來,我如何能夠擺脫他們?

+1

您是在調試模式還是在釋放模式中?我認爲DEBUG會在可執行文件中保存大量數據(字符串或其他)。 – Max

+0

我處於調試模式。 –

+0

標準庫包含一些常見錯誤的消息。 –

回答

1

通過使用文本編輯器,所有常量字符串都是人類可讀的。嘗試在程序中尋找「hello world」,它會彈出。 (當我們試圖弄清楚我們的opencl代碼是否值得這麼做的時候,第一次碰到這個問題......事實並非如此)。

這些字符串是窗口在每個可執行文件上引發的錯誤字符串。我不知道如何擺脫它們。

+0

也許是因爲它們會導致較大的可執行文件大小? –

+0

@SmaxSmaxović我應該澄清一點,在其他情況下可能是值得的,但在我們這裏它並不值得。 – IdeaHat

+0

@SmaxSmaxović當然他們做!在調試模式下構建會導致使用額外的RAM/ROM。建立在發佈模式以擺脫它們。 –