[英]#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.