簡體   English   中英

#if調試和調試版本?

[英]#if DEBUG and debug build?

如果在Visual Studio中進行調試,則以下代碼將打印字符串。

#if DEBUG
Console.WriteLine("...In visual studio...");
#endif

如果直接在...\\bin\\Debug的指導下運行編譯的exe文件,它將打印字符串嗎?

所有#...指令均由編譯器處理。 他們不是在最后的.exe文件中找到。 它們不會在運行時執行。

這意味着在這種情況下,重要的是,編譯時事物的狀態是什么。 如果將.exe構建為DEBUG構建,則將定義DEBUG常數,因此您的.exe文件將包含Console.WriteLine("...In visual studio..."); 線。 當您運行此.exe文件時,無論何時何地,無論如何,它都會將行輸出到控制台。

另一方面,如果將應用程序構建為RELEASE構建,則將不會定義DEBUG常量,並且編譯器也不會將該行添加到.exe文件中。 無論您做什么,都不會獲得.exe文件來打印行。 如果使用反編譯器查看.exe文件,您甚至都不會在其中找到字符串"...In visual studio..." 好像您一開始從未寫過該行一樣。

在哪里運行應用程序都無關緊要,重要的是如何構建它。 當您選擇debug build時,編譯器會聲明DEBUG常量,當您運行exe ,將執行if分支,因為聲明了該常量。

在Visual Studio中,可以通過轉到“ Project Properties下的Project Properties Build選項卡來查看已聲明的常量,如果您嘗試將構建模式更改為“ Release ,則可以看到“ 定義DEBUG常量 ”將自動取消選中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM