條件編譯已關閉
A. C語言 #if……#else……的意思
預處理指令是以#號開頭的代碼行。#號必須是該行除了任何空白字元外的第一個字元。#後是指令關鍵字,在關鍵字和#號之間允許存在任意個數的空白字元。整行語句構成了一條預處理指令,該指令將在編譯器進行編譯之前對源代碼做某些轉換。下面是部分預處理指令:
指令
用途
#
空指令,無任何效果
#include
包含一個源代碼文件
#define
定義宏#undef
取消已定義的宏#if
如果給定條件為真,則編譯畝褲塌下面代碼
#ifdef
如果宏已經定義,則編譯下面代碼
#ifndef
如果宏沒有定義,則編譯下面代碼
#elif
如果前面的#if給定條件不為真,當前條件為真,則編譯下面代碼,其實就是else
if的簡寫
#endif
結束一個#if……#else條件編譯塊#error
停止編譯並顯示錯誤信息
#if……#else……
就是預編譯,比如:
#if
1
。。。。
#else……
這里#if
1表示此次編譯把其下的純啟代碼編譯進去,如果改為#if
0,則表示此次編譯把#else後面的代碼編譯進去,而不是#if
0下的代碼。
#if
TT
……#else……
TT是一個宏,這里表示如果TT這個宏定義的話,則編譯#if
下的代碼,否則#else下的迅圓代碼。
具體可以參考:
http://blog.csdn.net/qiantuo1234/article/details/6976072
B. Re:請教我的vba條件編譯怎麼不執行
這個是因為VBA事件觸發條件的問題
解決辦法很簡單,只要另存為,關閉,打開另存的文檔OK
如果還是解決不了
就刪除代碼中
Application.EnableEvents = True
Application.EnableEvents = False
這兩句,防止觸發循環事件,到底死循環代碼,應該就Ok了!
C. vs中debug和release版本的區別
vs中的程序有debug和release兩個版本。
1、版本不同
Debug通常稱為調試版本,通過一系列編譯選項的配合,編譯的結果通常包含調試信息,而且不做任何優化,以為開發人員提供強大的應用程序調試能力。
而Release通常稱為發布版本,是為用戶使用的,一般客戶不允許在發布版本上進行調試。
2、運行效果不同
debug程序通常比release程序要慢,尤其是處理視頻方便release要比debug快很多。
3、演算法不同
debug跟release在初始化變數時所做的操作是不同的,debug是將每個位元組位都賦成0xcc, 而release的賦值近似於隨機。
(3)條件編譯已關閉擴展閱讀:
二者的編譯選項。
Debug 版本:
/Od 關閉優化開關
/D "_DEBUG" 相當於 #define _DEBUG,打開編譯調試代碼開關(主要針對assert函數)
/ZI 創建 Edit and continue(編輯繼續)資料庫,這樣在調試過程中如果修改了源代碼不需重新編譯
/GZ 可以幫助捕獲內存錯誤
/Gm 打開最小化重鏈接開關,減少鏈接時間
Release 版本:
/MD /ML 或 /MT 使用發布版本的運行時刻函數庫
/O1 或 /O2 優化開關,使程序 最小或最快
/D "NDEBUG" 關閉條件編譯調試代碼開關(即不編譯assert函數)
/GF 合並重復的字元串,並將字元串常量放到只讀內存,防止被修改
可以理解Debug 和 Release 並沒有本質的界限,他們只是一組編譯選項的集合,編譯器只是按照預定的選項行動。可以修改這些選項,從而得到優化過的調試版本或是帶跟蹤語句的發布版本。