锘??xml version="1.0" encoding="utf-8" standalone="yes"?> log4cpp鏄釜鍩轟簬LGPL鐨勫紑婧愰」鐩紝鏄熀浜庝紭縐鐨勬棩蹇楀鐞嗚窡韙」鐩甁ava璇█鐨刲og4j縐繪榪囨潵鐨勩俵og4j浠嬬粛鐨勬枃妗e緢澶氾紝鍦╦ava棰嗗煙浣跨敤鐨勪篃姣旇緝騫挎硾錛岃岃繖涓姛鑳藉己澶х殑搴撳鍥藉唴鐨凜++璇█寮鍙戜漢鍛樺嵈浣跨敤鐨勪笉澶氥傝繖閲屼粠寮鍙戜漢鍛樹嬌鐢ㄧ殑瑙掑害浠嬬粛榪欎釜搴擄紝浣垮紑鍙戜漢鍛樼敤鏈灝戠殑浠d環灝藉揩鎺屾彙榪欑鎶鏈備笅闈㈠厛綆鍗曚粙緇嶄竴涓嬭繖涓」鐩殑浼樼偣錛堜篃鏄痩og4j鐨勪紭鐐癸級錛岀劧鍚庡垎鍘熺悊錛屾墜鍔ㄤ嬌鐢ㄦ楠わ紝閰嶇疆鏂囦歡椹卞姩鏂瑰紡浣跨敤姝ラ錛屽叾浠栬冭檻絳夋柟闈㈣繘琛岃璁恒備互涓嬭璁哄熀浜巐og4cpp0.3.4b銆?/p>
log4cpp鏈?涓富瑕佺殑緇勪歡錛歝ategories錛堢被鍒級銆乤ppenders錛堥檮鍔犵洰鐨勫湴錛夈佸拰 layouts錛堝竷灞錛夈傦紙涓轟簡鏂逛究澶у鐞嗚В錛屾枃涓敖閲忎嬌鐢ㄨ嫳鏂囧師璇嶏級 layout綾繪帶鍒惰緭鍑烘棩蹇楁秷鎭殑鏄劇ず鏍峰紡錛堢湅璧鋒潵鍍忎粈涔堬級銆俵og4cpp褰撳墠鎻愪緵浠ヤ笅layout鏍煎紡錛?/p>
appender綾葷敤鏉ヨ緭鍑烘棩蹇楋紙琚玪ayout鏍煎紡鍖栧悗鐨勶級鍒頒竴浜涜澶囦笂銆傛瘮濡傛枃浠躲乻yslog鏈嶅姟銆佹煇涓猻ocket絳夈傚彲浠ュ畾涔夎嚜宸辯殑 appender綾昏緭鍑烘棩蹇椾俊鎭埌鍒殑璁懼涓婏紝姣斿搴旂敤鑷韓鐨勬棩瀛愬鐞嗚繘紼嬨佹暟鎹簱絳夈俛ppender鍜宭ayout鐨勫叧緋繪槸layout闄勫湪 appender涓婏紝appender綾昏皟鐢╨ayout澶勭悊瀹屾棩蹇楁秷鎭悗錛岃褰曞埌鏌愪釜璁懼涓娿俵og4cpp褰撳墠鎻愪緵浠ヤ笅appender錛?/p>
category 綾葷湡姝e畬鎴愯褰曟棩蹇楀姛鑳斤紝涓や釜涓昏緇勬垚閮ㄥ垎鏄痑ppenders鍜宲riority錛堜紭鍏堢駭錛夈備紭鍏堢駭鎺у埗鍝被鏃ュ織淇℃伅鍙互琚繖涓猚ategory璁板綍錛屽綋鍓嶄紭鍏堢駭鍒嗕負錛歂OTSET, DEBUG, INFO, NOTICE, WARN, ERROR, CRIT, ALERT 鎴?FATAL/EMERG 銆傛瘡涓棩蹇椾俊鎭湁涓紭鍏堢駭錛屾瘡涓猚ategory鏈変釜浼樺厛綰э紝褰撴秷鎭殑浼樺厛綰уぇ浜庣瓑浜巆ategory鐨勪紭鍏堢駭鏃訛紝榪欎釜娑堟伅鎵嶄細琚玞ategory璁板綍錛屽惁鍒欒蹇界暐銆備紭鍏堢駭鐨勫叧緋誨涓嬨俢ategory綾誨拰appender鐨勫叧緋繪槸錛屽涓猘ppender闄勫湪category涓婏紝榪欐牱涓涓棩蹇楁秷鎭彲浠ュ悓鏃惰緭鍑哄埌澶氫釜璁懼涓娿?/p>
NOTSET < DEBUG < INFO < NOTICE < WARN < ERROR < CRIT < ALERT < FATAL = EMERG category琚粍緇囨垚涓涓爲錛屽瓙category鍒涘緩鏃朵紭鍏堢駭緙虹渷NOTSET錛宑ategory緙虹渷浼氱戶鎵跨埗category鐨?appender銆傝屽鏋滀笉甯屾湜榪欑appender鐨勭戶鎵垮叧緋伙紝log4cpp鍏佽浣跨敤additivity 鏍囩錛屼負false鏃舵柊鐨刟ppender鍙栦唬category鐨刟ppender鍒楄〃銆?/p>
涓轟簡鏇村ソ鐨勭悊瑙d笂闈㈢殑姒傚康涓嬮潰浠ユ墜鍔ㄤ嬌鐢ㄦ柟寮忎婦渚嬨?/p>
鎵嬪姩浣跨敤log4cpp鐨勫熀鏈楠ゅ涓嬶細 鍙︿竴涓潪甯鎬紭縐鐨勭壒寰佸氨鏄氳繃璇誨彇閰嶇疆鏂囦歡錛岀‘瀹歝ategory銆乤ppender銆乴ayout絳夊璞°備篃鏄垜浠潪甯告帹鑽愮殑浣跨敤鏂瑰紡錛屽彲浠ョ伒媧誨湴閫氳繃閰嶇疆鏂囦歡瀹氫箟鎵鏈夊湴瀵硅薄鍙婂叾灞炴э紝涓嶇敤閲嶆柊緙栫爜錛屽姩鎬佹洿鏀規棩蹇楄褰曠殑絳栫暐銆?/p>
Log4cpp涓昏鎻愪緵浜?log4cpp::PropertyConfigurator 鍜宭og4cpp::SimpleConfigurator涓ょ鏈哄埗錛堟枃浠舵牸寮忥級錛屼絾 log4cpp::SimpleConfigurator灝嗘潵涓嶅啀鏀寔浜嗭紝鑰屼笖鏍煎紡闈炲父綆鍗曪紝榪欓噷灝變笉澶氳鏄庯紝鑷繁鐪嬫簮鐮佸惂銆?/p>
閰嶇疆鏂囦歡鐨勬牸寮忓拰log4j鐨勯厤緗枃浠朵竴鏍鳳紝鏄爣鍑嗙殑java灞炴ф枃浠舵牸寮忋備笅闈㈡槸闄勫甫鐨勪緥瀛愰厤緗枃浠訛細 閰嶇疆鏂囦歡璇硶濡備笅錛屼笉鏄緢瑙勮寖錛岀粨鍚堜笂闈㈢殑渚嬪瓙錛屽簲璇ュ彲浠ョ湅鎳傘?/p>
鍩烘湰浣跨敤姝ラ鏄細 涓嬮潰鏄釜綆鍗曠殑浣跨敤浠g爜錛屼嬌鐢ㄨ搗鏉ユ槸闈炲父鏂逛究鐨勶細 鎬ц兘闂錛屽彲鑳芥槸寰堝鎯充嬌鐢╨og4cpp鐨勭▼搴忓憳鍏沖績鐨勯棶棰樸傚湪鍙傝冭祫鏂?涓湁涓孌墊弿榪般傜粨璁哄氨鏄痩og4j浠ュ強log4cpp鏄互鎬ц兘涓洪瑕佺洰鏍囩殑錛涘鏋滃叧闂棩蹇楄褰曠殑璇濓紝瀵規ц兘褰卞搷鍙互蹇界暐錛涙墦寮鏃ュ織璁板綍錛屼富瑕佹秷鑰楁槸鍦ㄨ褰曞姩浣滐紝鑰屼笉鏄簱鐨勭鐞嗚繃紼嬶紱鎵浠ヤ綘灝藉彲鏀懼績鐨勪嬌鐢ㄣ傚疄鍦ㄨ娣辯┒鎬ц兘鐨勮瘽銆傚彲浠ヤ粠涓嬮潰鏂歸潰鎻愰珮錛?/p>
杈撳嚭鐨勬棩蹇楁秷鎭笉瑕佷嬌鐢ㄥ鏉傜殑杞崲鎴栬呭鐞嗭紝姣斿錛?sub1.debug(string("Current num is") + i + GetCurStat()); 榪欑鎯呭喌鍗充嬌涓嶈繘琛屾棩蹇楀鐞嗭紝鎷彿涓殑璇彞榪樻槸浼氭墽琛屻傚彉閫氭柟娉曟槸錛?/p>
瀹夊叏鎬ч棶棰樺浜庡晢涓氳蔣浠跺紑鍙戝彲鑳戒篃鏄棶棰樸傚彲鑳戒笉甯屾湜鍒漢閫氳繃淇敼閰嶇疆鏂囦歡鑾峰彇紼嬪簭鐨勮皟璇曠瓑紼嬪簭鍐呴儴榪愯鎯呭喌鐨勬棩蹇椾俊鎭傛瘮杈冪ǔ濡ョ殑鏂規鎴栬呮槸鍔犲瘑閰嶇疆鏂囦歡錛岃繍琛屼腑瑙e瘑錛岃緭鍑哄埌涓存椂鏂囦歡鍚庤鍙栵紱鎴栬呭湪鍙戣鐗堟湰閲岃鍙栭厤緗枃浠跺悗錛屽己琛屾妸浣庝簬鏌愪釜浼樺厛綰х殑category璁懼埌姣旇緝楂樼殑浼樺厛綰с?/p>
澶氱嚎紼嬪畨鍏ㄦч棶棰樸傚綋鍓峫og4cpp榪樻病鏈夊縐拌嚜宸辨槸澶氱嚎紼嬪畨鍏ㄧ殑錛屼笉榪囧叾浠g爜涓ぇ澶氭暟鍙兘鍐茬獊鐨勫湴鏂歸兘澧炲姞浜嗙嚎紼嬩簰鏂ユ帶鍒訛紝瀵瑰綰跨▼鐜搴旇闂涓嶅ぇ銆備絾涓轟簡鍔犲叆榪欎釜鐗規э紝linux涓嬬紪璇憀og4cpp鏃訛紝configure璇峰姞鍏?-with-pthreads 鎴栬?-with-omnithreads閫夐」銆俉in鐗堟湰宸茬粡鍔犲叆瀵筂S綰跨▼鐨勬敮鎸併?/p>
1. Logging and Tracing in C++ Simplified: Traveling the Road Last Traveled by a Previously Invented Wheel 2. log4j 鎻愪緵浜嗗鏃ュ織璁板綍鐨勬帶鍒?br/>http://www-900.ibm.com/developerWorks/cn/java/jw-log4j/index.shtml 3. 浣跨敤Log4j榪涜鏃ュ織鎿嶄綔 4. log4cpp涓婚〉 5. log4j涓婚〉 6. log4cplus涓婚〉 7. log4c涓婚〉 鏉庣兢錛屽叧娉ㄤ簬緗戠粶瀹夊叏浜у搧鐨勫紑鍙戙佺爺絀訛紱杞歡寮鍙戣繃紼嬬瓑鏂歸潰銆傛偍鍙互閫氳繃liqun@nsfocus.com鍜屼粬鑱旂郴銆?/p>
緇跨洘縐戞妧
2003 騫?9 鏈?
鍙互鍔ㄦ佹帶鍒舵棩蹇楄褰曠駭鍒紝鍦ㄦ晥鐜囧拰鍔熻兘涓繘琛岃皟鏁達紱
鎵鏈夐厤緗彲浠ラ氳繃閰嶇疆鏂囦歡榪涜鍔ㄦ佽皟鏁達紱
澶氳璦鏀寔錛屽寘鎷琂ava錛坙og4j錛夛紝C++錛坙og4cpp銆乴og4cplus錛夛紝C錛坙og4c錛夛紝python錛坙og4p錛夌瓑錛?br/>...
log4cpp::BasicLayout // 浠?鏃墮棿鎴?浼樺厛綰э紙priority錛屼笅鏂囦粙緇嶏級
// 綾誨埆錛坈ategory錛屼笅鏂囦粙緇嶏級
// NDC鏍囩錛坣ested diagnostic contexts 涓嬫枃浠嬬粛錛? 鏃ュ織淇℃伅"銆? // 濡傦細1056638652 INFO main : This is some info
log4cpp::PatternLayout // 璁╃敤鎴鋒牴鎹被浼間簬 C 璇█ printf 鍑芥暟鐨勮漿鎹㈡ā寮忔潵鎸囧畾杈撳嚭鏍煎紡銆傛牸寮忓畾涔夎浠g爜闄勫甫鏂囨。銆?log4cpp::SimpleLayout // 浠?浼樺厛綰э紙priority錛?- 鏃ュ織淇℃伅"鏍煎紡鏄劇ず銆?
log4cpp::IdsaAppender // 鍙戦佸埌IDS鎴栬卨ogger, 璇︾粏瑙?http://jade.cs.uct.ac.za/idsa/
log4cpp::FileAppender // 杈撳嚭鍒版枃浠?log4cpp::RollingFileAppender // 杈撳嚭鍒板洖鍗鋒枃浠訛紝鍗沖綋鏂囦歡鍒拌揪鏌愪釜澶у皬鍚庡洖鍗?log4cpp::OstreamAppender // 杈撳嚭鍒頒竴涓猳stream綾?log4cpp::RemoteSyslogAppender // 杈撳嚭鍒拌繙紼媠yslog鏈嶅姟鍣?log4cpp::StringQueueAppender // 鍐呭瓨闃熷垪
log4cpp::SyslogAppender // 鏈湴syslog
log4cpp::Win32DebugAppender // 鍙戦佸埌緙虹渷緋葷粺璋冭瘯鍣?log4cpp::NTEventLogAppender // 鍙戦佸埌win 浜嬩歡鏃ュ織
// FileName: test_log4cpp1.cpp
// Test log4cpp by manual operation.
// Announce: use as your own risk.
// Compile : g++ -otest1 -llog4cpp test_log4cpp1.cpp
// Run : ./test1
// Tested : RedHat 7.2 log4cpp0.3.4b
// Author : liqun (liqun@nsfocus.com)
// Data : 2003-6-27
#include "log4cpp/Category.hh"
#include "log4cpp/FileAppender.hh"
#include "log4cpp/BasicLayout.hh"
int main(int argc, char* argv[])
{
// 1瀹炰緥鍖栦竴涓猯ayout 瀵硅薄
log4cpp::Layout* layout =
new log4cpp::BasicLayout();
// 2. 鍒濆鍖栦竴涓猘ppender 瀵硅薄
log4cpp::Appender* appender = new
log4cpp::FileAppender("FileAppender",
"./test_log4cpp1.log");
// 3. 鎶妉ayout瀵硅薄闄勭潃鍦╝ppender瀵硅薄涓? appender->setLayout(layout);
// 4. 瀹炰緥鍖栦竴涓猚ategory瀵硅薄
log4cpp::Category& warn_log =
log4cpp::Category::getInstance("mywarn");
// 5. 璁劇疆additivity涓篺alse錛屾浛鎹㈠凡鏈夌殑appender
warn_log.setAdditivity(false);
// 5. 鎶奱ppender瀵硅薄闄勫埌category涓? warn_log.setAppender(appender);
// 6. 璁劇疆category鐨勪紭鍏堢駭錛屼綆浜庢浼樺厛綰х殑鏃ュ織涓嶈璁板綍
warn_log.setPriority(log4cpp::Priority::WARN);
// 璁板綍涓浜涙棩蹇? warn_log.info("Program info which cannot be wirten");
warn_log.debug("This debug message will fail to write");
warn_log.alert("Alert info");
// 鍏朵粬璁板綍鏃ュ織鏂瑰紡
warn_log.log(log4cpp::Priority::WARN, "This will be a logged warning");
log4cpp::Priority::PriorityLevel priority;
bool this_is_critical = true;
if(this_is_critical)
priority = log4cpp::Priority::CRIT;
else
priority = log4cpp::Priority::DEBUG;
warn_log.log(priority,"Importance depends on context");
warn_log.critStream() << "This will show up << as "
<< 1 << " critical message"
<< log4cpp::CategoryStream::ENDLINE;
// clean up and flush all appenders
log4cpp::Category::shutdown();
return 0;
}
# a simple test config
#瀹氫箟浜?涓猚ategory sub1, sub2, sub1.sub2
log4j.rootCategory=DEBUG, rootAppender
log4j.category.sub1=,A1
log4j.category.sub2=INFO
log4j.category.sub1.sub2=ERROR, A2
# 璁劇疆sub1.sub2 鐨刟dditivity灞炴?log4j.additivity.sub1.sub2=false
#瀹氫箟rootAppender綾誨瀷鍜宭ayout灞炴?log4j.appender.rootAppender=org.apache.log4j.ConsoleAppender
log4j.appender.rootAppender.layout=org.apache.log4j.BasicLayout
#瀹氫箟A1鐨勫睘鎬?log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.fileName=A1.log
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout
#瀹氫箟A2鐨勫睘鎬?log4j.appender.A2=org.apache.log4j.ConsoleAppender
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=The message '%m' at time %d%n
log4j / log4cpp . [category / appender].[category or appender 's name].[category or appender 's property]
= [Appender / Layout / property's value / Priority, appender name1 [appender name2 ...]]
[appender]
{ConsoleAppender}
{FileAppender} // 褰揳ppender鐨勭被鍨嬫槸FileAppender鏃訛紝鍙互瀹氫箟瀹冧笅闈㈢殑灞炴с? [fileName] string foobar // 鏍煎紡鏄細灞炴у悕 鍊肩殑綾誨瀷 緙虹渷鍊? [append] bool true
{RollingFileAppender}
[fileName] string foobar
[maxFileSize] num 10*1024*1024
[maxBackupIndex] num 1
[append] bool true
{SyslogAppender}
[syslogName] string syslog
[syslogHost] string localhost
[facility] num -1 // * 8 to get LOG_KERN, etc. compatible values.
[portNumber] num -1
{IdsaAppender}
[idsaName] string foobar
{Win32DebugAppender}
{NTEventLogAppender}
[source] string foobar
[threshold] string "" // 鍏ㄩ儴
// 濡傛灉姝ょ被鍨媋ppender闇瑕乴ayout錛屽繀欏誨畾涔夋appender鐨勪笅闈㈠睘鎬? [layout]
{BasicLayout}
{SimpleLayout}
{PatternLayout} // 褰搇ayout鐨勫兼槸BasicLayout鏃訛紝闇瑕佸畾涔変笅闈㈢殑灞炴с? [ConversionPattern]
[rootCategory]
[additivity]
[category name] bool true
// FileName: test_log4cpp2.cpp
// Test log4cpp by config file.
// Announce: use as your own risk.
// Compile : g++ -llog4cpp test_log4cpp2.cpp
// Run : ./a.out
// Tested : RedHat 7.2 log4cpp0.3.4b
// Author : liqun (liqun@nsfocus.com)
// Data : 2003-6-27
#include "log4cpp/Category.hh"
#include "log4cpp/PropertyConfigurator.hh"
int main(int argc, char* argv[])
{
// 1 璇誨彇瑙f瀽閰嶇疆鏂囦歡
// 璇誨彇鍑洪敊, 瀹屽叏鍙互蹇界暐錛屽彲浠ュ畾涔変竴涓己鐪佺瓥鐣ユ垨鑰呬嬌鐢ㄧ郴緇熺己鐪佺瓥鐣? // BasicLayout杈撳嚭鎵鏈変紭鍏堢駭鏃ュ織鍒癈onsoleAppender
try {
log4cpp::PropertyConfigurator::configure("./log4cpp.conf");
} catch(log4cpp::ConfigureFailure& f) {
std::cout << "Configure Problem " << f.what() << std::endl;
return -1;
}
// 2 瀹炰緥鍖朿ategory瀵硅薄
// 榪欎簺瀵硅薄鍗充嬌閰嶇疆鏂囦歡娌℃湁瀹氫箟涔熷彲浠ヤ嬌鐢紝涓嶈繃鍏跺睘鎬х戶鎵垮叾鐖禼ategory
// 閫氬父浣跨敤寮曠敤鍙兘涓嶅お鏂逛究錛屽彲浠ヤ嬌鐢ㄦ寚閽堬紝浠ュ悗鍋氭寚閽堜嬌鐢? // log4cpp::Category* root = &log4cpp::Category::getRoot();
log4cpp::Category& root = log4cpp::Category::getRoot();
log4cpp::Category& sub1 =
log4cpp::Category::getInstance(std::string("sub1"));
log4cpp::Category& sub3 =
log4cpp::Category::getInstance(std::string("sub1.sub2"));
// 3 姝e父浣跨敤榪欎簺category瀵硅薄榪涜鏃ュ織澶勭悊銆? // sub1 has appender A1 and rootappender.
sub1.info("This is some info");
sub1.alert("A warning");
// sub3 only have A2 appender.
sub3.debug("This debug message will fail to write");
sub3.alert("All hands abandon ship");
sub3.critStream() << "This will show up << as " << 1 << " critical message"
<< log4cpp::CategoryStream::ENDLINE;
sub3 << log4cpp::Priority::ERROR
<< "And this will be an error"
<< log4cpp::CategoryStream::ENDLINE;
sub3.log(log4cpp::Priority::WARN, "This will be a logged warning");
return 0;
}
if(sub1.isDebugEnabled())
{
sub1.debug(string("Current num is") + i + GetCurStat());
}
http://soldc.sun.com/articles/logging.html
http://www-900.ibm.com/developerWorks/cn/java/l-log4j/index.shtml
http://sourceforge.net/projects/log4cpp/
http://jakarta.apache.org/log4j/docs/index.html
http://log4cplus.sourceforge.net/
http://log4c.sourceforge.net/
]]>
涓涓┖綾葷紪璇戝櫒鑷姩緇欏叾娣誨姞鐨勫嚱鏁版湁鍝嚑涓?
class Empty
{
public:
Empty(); // 緙虹渷鏋勯犲嚱鏁?br/>Empty( const Empty& ); // 鎷瘋礉鏋勯犲嚱鏁?br/>~Empty(); // 鏋愭瀯鍑芥暟
Empty& operator=( const Empty& ); // 璧嬪艱繍綆楃
Empty* operator&(); // 鍙栧潃榪愮畻絎?br/>const Empty* operator&() const; // 鍙栧潃榪愮畻絎?const
};
鍦ㄧ綉涓婃壘鍒扮殑瑙e喅鏂規硶錛?a >http://www.codeguru.com/cpp/w-p/dll/importexportissues/article.php/c123/
銆銆DOS鏃朵唬c璇█寮鍙戠殑緇忓吀宸ュ叿錛岀洰鍓嶉傚悎涓ょ被浜轟嬌鐢細c璇█beginner錛堝挨鍏舵槸瀛︾敓涓鏃忥級錛屽叿鏈夋鏃ф儏鑺傜殑涓撲笟浜哄+錛氾級
銆銆----錛濾isual C++ 6.0/7.0
銆銆紼沖畾鑰屽己澶х殑IDE寮鍙戠幆澧冿紝鍏鋒湁涓板瘜鐨勮皟璇曞姛鑳斤紝瀹氬埗瀹忕殑鍔熻兘涔熸槸鍏朵竴澶х壒鑹層侻icrosoft鐨勭粡鍏鎬箣浣滐紝鍔熻兘寮哄ぇ鑷笉蹇呰█璇淬傞檮甯︾殑涓浜涘伐鍏蜂篃寰堜笉閿欙紝姣斿錛歋py++銆備絾緙栬瘧鍣ㄨ緝涔嬪悓綾伙紝鏀寔c++鏍囧噯鐨勭▼搴︿笉澶熷ソ錛屽挨鍏?.0鍙婁互鍓嶇殑鐗堟湰銆?/p>
銆銆----錛濨CB
銆銆Borland鐨凜++ Builder鏄彲浠ヤ笌VC鍖規晫鐨勫彟涓涓姛鑳藉己澶х殑IDE錛岄熷害鍜岀ǔ瀹氭х◢閫婏紝浣嗗c++鏍囧噯鏀寔鐨勭▼搴﹁緝濂姐?/p>
銆銆----錛濩ygwin
銆銆Windows騫沖彴涓嬬殑C++緙栬瘧鍣紝鍩轟簬gcc錛屽張瀹屽叏鍏煎Window鐗規湁鐨勪笢瑗匡紝姣斿瀵箇insock鐨勬敮鎸併備粠http://www.cygwin.com鍙互鎵懼埌鏈夊叧Cygwin鐨勮緇嗕俊鎭?/p>
銆銆----錛濪ev-c++
銆銆Windows騫沖彴涓嬶紝涓涓被浼糣C銆丅CB鐨刢++ IDE寮鍙戠幆澧冿紝灞炰簬鍏變韓杞歡銆傜晫闈翰鍒囦紭闆咃紝size涔熶笉澶э紝鍏?.9.x鐗堟湁涓枃璇█鏀寔錛屾棤闇姹夊寲銆傜紪璇戝櫒鍩轟簬gcc錛屽畬鍏ㄦ敮鎸丼TL銆備絾鏄浜庤妯¤緝澶х殑杞歡欏圭洰錛屾亹鎬曢毦浠ヨ儨浠匯傚彲浠ヤ粠:http://www.bloodshed.net/dev/devcpp.html鎵懼埌鏈夊叧Dev-c++鐨勬湁鍏充俊鎭?/p>
銆銆----錛濻ource Insight
銆銆鏈夌潃鍜孌ev c++涓鏍鋒紓浜殑鐣岄潰錛屾彁渚涗唬鐮佺殑緙栬緫鍜屽療鐪嬪姛鑳斤紝鍏鋒湁涓板瘜鐨勮娉曞姞浜姛鑳斤紝鍙互鍍廣C涓鏍瘋嚜鍔ㄥ脊鍑烘垚鍛樺嚱鏁扮殑鎻愮ず錛屽茍鍏鋒湁蹇熸柟渚跨殑鍑芥暟璺寵漿鍔熻兘錛堜絾鏄煩杞熷害浼間箮鏈夌偣鎱級銆傚彧鏄粯璁よ緗笉閫傚悎鏃訛紝闇瑕佷粩緇嗙殑璋冩暣鍜屼慨鏀廣傛棤娉曟煡鎵劇粡typedef涔嬪悗鐨勫悕瀛椼?/p>
銆銆杈呭姪宸ュ叿
銆銆----錛濾isual Assist
銆銆VC IDE鐜涓嬬殑杈呭姪緙栫▼宸ュ叿錛岃兘璇嗗埆鍚勭鍏抽敭瀛椼佸嚱鏁般佹垚鍛樺彉閲忥紝鑷姩緇欏嚭tip錛屽茍鑷姩鏇存澶у皬鍐欓敊璇紝鏍囩ず鎷煎啓閿欒絳夈傛槸VC寮鍙戠殑鑹ソ浼翠荊銆?/p>
銆銆----錛濽nderstand for C++
銆銆涓嬈綾/c++IDE緙栫▼鐨勮緟鍔╁伐鍏鳳紝鏀寔鍙嶅悜宸ョ▼錛屼唬鐮佸鍚戝拰涓浜涚粺璁″姛鑳斤紝浠?span style="COLOR: #4c408c">http://www.scitools.com鍙互鎵懼埌鏈夊叧Understand for C++鐨勮緇嗕俊鎭?/p>
銆銆紼嬪簭緙栬緫鍣?/strong>
銆銆----錛濫ditPlus
銆銆涓嬈懼緢涓嶉敊鐨勬枃鏈紪杈戣蔣浠訛紝鍔熻兘寮哄ぇ鍗村張鍗佸垎杞誨閥銆傛敮鎸佷笉鍚岃璦鐨勮娉曞姞浜紝榪樻湁Project緇勭粐鍔熻兘錛屽叿鏈変赴瀵岀殑鑷畾涔夊姛鑳姐傞氳繃璁劇疆User Tool錛屽彲浠ュ拰鍏朵粬璇█緙栬瘧鍣ㄧ粨鍚堬紝褰㈡垚涓涓畝鍗曠殑IDE銆?/p>
銆銆----錛濽ltra Edit
銆銆鍔熻兘鍜孍ditPlus鐩稿綋錛岄氳繃鑴氭湰鏂囦歡鎻愪緵鐨勯厤緗姛鑳藉彲浠ュ畾鍒剁紪杈戠幆澧冿紝浣嗚嚜6.0鐗堜互鍚庝竴鐩存病澶氬ぇ鍙樺寲錛屽氨緙栫▼鑰岃█錛岃嚜瀹氫箟璁劇疆娌℃湁EditPlus鏂逛究銆?/p>
銆銆----錛濫MACS
銆銆鍏鐨勪笘鐣屼笂鍔熻兘鏈澶氾紝鏈澶嶆潅鐨勬枃鏈紪杈戝櫒錛屽叾瀹炰篃鍙互褰撲綔紼嬪簭鍛樼敤鐨勭紪杈戝櫒銆?/p>
銆銆----錛濾isual Slick Edit
銆銆涓涓姛鑳藉己澶х殑紼嬪簭鍛樼敤緙栬緫鍣ㄣ傛渶鍊煎緱涓鎻愮殑鏄叾瀹氬埗鍔熻兘錛屽緢濂界敤錛屽彲浠ュ拰EMACS鐩告瘮銆傝嚜甯︿簡涓濂桺CODE瑙i噴鍣紝鐢╟鐨勮娉曪紝榪樺彲浠ユ寕鎺ュ姩鎬佸簱銆傞厤鍚坢ingw涓璧蜂嬌鐢ㄥ緢鏂逛究銆備粠http://www.slickedit.com鍙互鎵懼埌鏈夊叧SlickEdit鐨勮緇嗕俊鎭?/p>
銆銆----錛濱QEdit
銆銆鍏ㄥ姛鑳界殑紼嬪簭鍛樼敤緙栬緫鍣紝鐣岄潰寰堟紓浜紝浠?span style="COLOR: #4c408c">http://pwksoftware.com鍙互鎵懼埌鏈夊叧IQEdit鐨勮緇嗕俊鎭?/p>
銆銆UML/寤烘ā
銆銆----錛濺ational Rose
銆銆寮哄ぇ鐨勫緩妯″伐鍏鳳紝鏃╁凡"瀹跺柣鎴鋒檽"錛屽姛榪囪嚜鐒朵笉蹇呭鍔犺瘎璇翠簡銆備粠http://www.rationalsoftware.com.cn鍙互鎵懼埌鏈夊叧Rational Rose鐨勮緇嗕俊鎭?/p>
銆銆----錛濾isual Modeler
MS Visual Studio 6.0鎵闄勭殑灝忓伐鍏楓傚睘浜嶳ational鍜孧icroSoft鍚堜綔鐨勬垬鐣?a href="javascript:;" target="_self" onclick="javascript:tagshow(event, '%B2%FA%C6%B7');">浜у搧錛屾槸Rose鐨勭畝鍖栫増銆?br/>----錛濾isio
銆銆Microsoft鐨勫緩妯″伐鍏鳳紝鎰熻鏇翠漢鎬у寲涓浜涳紝浣嗗姛鑳芥病鏈塕ose澶氥佸己銆佷笓錛屾敮鎸佹鍚戠殑浠g爜鐢熸垚錛屼互鍙婂浠g爜鐨勫弽鍚戝伐紼嬨?/p>
銆銆----錛濼ogether
銆銆鍙︿竴嬈懼姛鑳藉己澶х殑寤烘ā宸ュ叿錛岀敤java緙栧啓鑰屾垚錛屽彛紕戜笉閿欙紝涓嶈繃閫熷害紼嶇◢鎱簡涓浜涖備粠http://www.togethersoft.com鍙互鎵懼埌鏈夊叧Togather鐨勮緇嗕俊鎭紝鍙﹀錛屼互涓嬬綉鍧鎻愪緵浜嗕竴涓湁鍏砊ogether鐨勬暀紼嬶細 銆銆銆http://www.cc.puv.fi/~tka/kurssit/Tietojarjestelmien_suunnittelu
/together/TCCGuide6
銆銆----錛濾isual UML
銆銆鏀寔澶氱璇█綾誨瀷錛屾瘮濡傦細VC銆乂B銆丏ELPHI銆丆ORBA IDL絳夛紝鍙互鐩存帴浠嶶ML璁捐鍥劇敓鎴愪唬鐮侊紝綆鍗曟槗鐢紝瀹屽叏閫傚悎Personal use錛岀晫闈篃寰堟竻鐖姐備粠http://www.visualObject.com鍙互鎵懼埌鏈夊叧Visual UML鐨勮緇嗕俊鎭?/p>
銆銆----錛濻martDraw
銆銆閫氱敤鍥捐〃鍒朵綔杞歡錛屽彲浠ョ敤鏉ュ埗浣滅粍緇囨満鏋勫浘銆佹祦紼嬪浘銆佺粺璁″浘琛ㄧ瓑銆傞殢甯︽湁鍥懼簱錛屽熀鏈弧瓚沖埗浣滃悇綾誨浘琛ㄧ殑闇瑕併備粠http://www.smartdraw.com鍙互鎵懼埌鏈夊叧SmartDraw鐨勮緇嗕俊鎭?/p>
銆銆----錛濸layCase
銆銆鍥戒駭闈㈠悜瀵硅薄鐨勫緩妯¤蔣浠訛紝鍏煎UML鍜孖DEF錛岃交閲忕駭杞歡錛屽彧鏄晫闈㈢湅璧鋒潵鏈夌偣綆鏈達紝涔冩槸楂樺睍鍏堢敓鐢―elphi瀹屾垚鐨勩?/p>
銆銆鐗堟湰鎺у埗
銆銆----錛濩learCase
銆銆Rational鐨勭増鏈帶鍒剁鐞嗚蔣浠訛紝鍔熻兘寮哄ぇ錛屽彲浠ユ帶鍒跺縐嶇被鍨嬬殑鏂囨。錛岀敋鑷沖寘鎷琖ord銆丒xcel銆丳owerPoint鏂囨。銆備絾浣跨敤澶嶆潅錛屼笉鏄撲笂鎵嬶紝涓斾笉鏄厤璐硅蔣浠躲?/p>
銆銆----錛濩VS
銆銆涓哄熀浜嶹eb鐨勫垎甯冨紡鍗忓悓寮鍙戞彁渚涗簡鐗堟湰鎺у埗綆$悊鎵嬫錛屼笖鏄厤璐硅蔣浠訛紝鍙互閫氳繃鑴氭湰瀹氬埗鍔熻兘銆備絾鍦ㄦ潈闄愭帶鍒舵柟闈㈠姛鑳界浉瀵硅緝寮便?/p>
銆銆----錛濾SS
銆銆寰蔣鐨勭増鏈帶鍒剁鐞嗗伐鍏鳳紝鍔熻兘鐩稿綆鍗曪紝閫傚悎浜庡皬鍨嬪洟闃熷紑鍙戯紝灝嗗叾鏁村悎鍒板井杞殑鍏朵粬寮鍙戝伐鍏蜂腑錛屼嬌鐢ㄨ搗鏉ュ崄鍒嗘柟渚褲?/p>
銆銆----錛濻ourceOffSite
銆銆寰蔣涓哄紑鍙戜漢鍛樻彁渚涚殑榪滅▼璁塊棶VSS鏁版嵁搴撶殑宸ュ叿錛屼嬌鏁版嵁搴撳緱浠ヨ繙紼嬫洿鏂幫紝浠ユ敮鎸佽繙紼嬪姙鍏傚叾浠栫殑鐗堟湰綆$悊宸ュ叿榪樺寘鎷細PVCS銆乂CS銆丷CS絳夈?/p>
銆銆XML
銆銆----錛瀍xpat
銆銆鐢ㄤ簬璇誨彇鍜屽鐞哫ML鏂囨。鐨刢鍑芥暟搴擄紝鏈鍒濇槸James Clark鐨勪釜浜轟綔鍝侊紝綆鍗曡交宸э紝涓旈熷害蹇備絾鏀寔鐨勭紪鐮佹柟寮忔湁闄愶紝鏈閬楁喚鐨勬槸涓嶆敮鎸佷腑鏂囥備粠http://expat.sourceforge.net鍙互鎵懼埌鏈夊叧expat鐨勮緇嗕俊鎭?/p>
銆銆----錛瀤ml4c
銆銆IBM鐨刋ML Parser錛岀敤c++璇█鍐欏氨錛屽姛鑳借秴綰у己澶с傚彿縐版敮鎸佸杈?00縐嶅瓧絎︾紪鐮侊紝鑳藉鏀寔涓枃錛岄傚悎浜庡ぇ瑙勬ā鐨剎ml搴旂敤銆傝嫢鍙槸寰堝皬鑼冨洿鐨勫簲鐢紝鍒欓潪鏈浣抽夋嫨錛屾瘯绔燂紝浣犻渶瑕?鑳岃礋"綰?2M宸﹀彸鐨刣ll鐨勬矇閲嶈礋鎷呫備粠http://www.alphaworks.ibm.com/tech/xml4c鍙互鎵懼埌鏈夊叧xml4c鐨勮緇嗕俊鎭?/p>
銆銆----錛瀀erces c++
銆銆Apache鐨刋ML欏圭洰錛屽悓鏍鋒槸c++瀹炵幇錛屾潵婧愪簬IBM鐨剎ml4c錛屽洜姝ょ紪紼嬫帴鍙d篃鏄拰xml4c涓鑷寸殑銆備絾鏄洰鍓嶅彧鏀寔灝戞暟鐨勫瓧絎︾紪鐮侊紝濡侫SCII錛孶TF-8錛孶TF-16絳夛紝涓嶈兘澶勭悊鍖呭惈涓枃瀛楃鐨刋ML鏂囨。銆備粠http://xml.apache.org/xerces-c鍙互鎵懼埌鏈夊叧Xerces c++鐨勮緇嗕俊鎭?/p>
銆銆嫻嬭瘯
銆銆----錛濩ppUnit
銆銆涓涓猚++鐨勫崟鍏冩祴璇曟鏋訛紝鍙互閫氳繃媧劇敓嫻嬭瘯綾葷殑鏂瑰紡錛屽畾鍒跺叿浣撶殑嫻嬭瘯鏂規銆倄Unit瀹舵棌鐨勪竴鍛橈紝浠嶫Unit縐繪鑰屾潵錛孞Unit鏄疛ava璇█鐨勫崟鍏冩祴璇曟鏋躲備粠http://cppuint.sourceforge.net鍙互鎵懼埌鏈夊叧CppUint鐨勮緇嗕俊鎭?/p>
銆銆----錛濺ational ROBOT
銆銆Rational鐨勮嚜鍔ㄥ寲嫻嬭瘯宸ュ叿錛岄氳繃緙栧啓鑴氭湰鐨勬柟寮忔彁渚涜嚜鍔ㄥ寲嫻嬭瘯鐗規с傚叾GUI鏂瑰紡鐨勮剼鏈綍鍒跺姛鑳斤紝鏈夊姪浜庡GUI杞歡榪涜鍔熻兘嫻嬭瘯錛涘叾VU鏂瑰紡鐨勮剼鏈綍鍒跺姛鑳斤紝鏈夊姪浜庢祴璇曟煇浜涜蔣浠剁殑鏁版嵁閫氳鍔熻兘銆?/p>
銆銆----錛濺ational Purify
銆銆鍚屾牱鏄疪ational鐨勮嚜鍔ㄥ寲嫻嬭瘯宸ュ叿錛屼笉闇瑕佽嫻嬬▼搴忕殑婧愪唬鐮侊紝鍙互鐢ㄦ潵媯鏌ュ唴瀛樿闂敊璇乄indows API璋冪敤閿欒絳夛紝浠ュ畬鎴愯蔣浠剁殑鍙潬鎬ф祴璇曪紝灞炰簬鐧界洅嫻嬭瘯銆?/p>
銆銆鍏朵粬鐨凴ational嫻嬭瘯宸ュ叿榪樺寘鎷細TestFactory銆丳ureCoverage銆乀estManager絳夈?/p>
銆銆鏃ュ織
銆銆----錛瀕og4cpp
銆銆涓涓敤浜庢棩蹇楄褰曠殑c++鍑芥暟搴擄紝鍙互灝嗗唴瀹逛互瀹氬埗鐨勬柟寮忚褰曞埌涓嶅悓鐨勭洰鐨勫湴錛屾瘮濡傦細鏂囦歡銆佹帶鍒跺彴syslog絳夛紝鍚屾椂榪樺彲浠ラ氳繃鎺у埗璁板綍綰у埆鏉ュ睆钄芥帀鏌愪簺鏃犲叧璁板綍銆備粠http://log4cpp.sourceforge.net鍙互鎵懼埌鏈夊叧log4cpp鐨勮緇嗕俊鎭?/p>
銆銆娉ㄩ噴
銆銆----錛濪oc++
銆銆娉ㄩ噴鏂囨。鐢熸垚宸ュ叿錛屾牴鎹簮紼嬪簭涓殑鏂囨。娉ㄩ噴錛屽彲浠ヨ緭鍑篢eX鍜孒TML鏍煎紡鐨勬枃妗c傞櫎浜嗘敮鎸乧/c++璇█澶栵紝榪樻敮鎸両DL鍜宩ava銆備粎鎻愪緵鍛戒護琛屼嬌鐢ㄦ柟寮忋備粠http://docpp.sourceforge.net鍙互鎵懼埌鏈夊叧Doc++鐨勮緇嗕俊鎭?/p>
銆銆----錛濪oxygen
銆銆娉ㄩ噴鏂囨。鐢熸垚宸ュ叿錛岃緝涔婦oc++鍔熻兘鏇翠負榻愬叏錛屽彲浠ョ敓鎴愬寘鎷琀TML銆丳DF銆丷TF鍦ㄥ唴鐨勫縐嶆牸寮忕殑鏂囨。錛屽茍鏈塆UI鐣岄潰錛岄櫎浜嗘敮鎸乧/c++璇█澶栵紝榪樻敮鎸両DL銆乯ava銆丳HP銆乧#絳夈備粠http://www.stack.nl/~dimitri/doxygen鍙互鎵懼埌鏈夊叧Doxygen鐨勮緇嗕俊鎭?/p>
鎴戝湪瀛︿範VC,鎴栬呭湪闃呰鍒漢鍐欑殑鏂囩珷鐨勬椂鍊?鍋跺皵紕板埌涓嬮潰寰堝鏈夎叮鐨?騫朵笖寰堝鎬殑璇彞,鏁寸悊璧鋒潵,浠ュ鍚庡繕. 鍏跺疄鏈変簺鏄笉澶у鏄撴兂鍒扮殑鎶宸э紝璐村嚭鏉ユ潈褰撳ぇ浼欓キ鍚庢病浜嬬殑灝忓搧鏂囷紝褰撶劧涓嶈榪囧鐨勭湅閲嶇被浼肩殑璇彞瀛︿範錛岃屽拷鐣ヤ簡鍩虹鐭ヨ瘑銆?br/>
涓. 濂囨殑瀹忓畾涔?br/>(1) #define for if(0); else for
鎸夌収c++鏍囧噯,for涓畾涔夌殑鍙橀噺鐨勪綔鐢ㄥ煙搴旇鍙湪for寰幆涓湁鏁?鑰孷C鍗翠笉琛?姣斿榪欐牱瀹氫箟鏄笉瀵圭殑
for(int i=0;i<90;i++)
{
...;
}
for(int i=0;i<90;i++) //閲嶅瀹氫箟i鍙橀噺
{
...;
}
濡傛灉鍔犱笂鏍囬鐨勯偅鍙?閭d箞灝卞彲浠ヤ簡,灝辨槸璁﹊浣滅敤鍩熷眬闄愬湪else涓? 榪欎釜闂鍦╪et涓凡緇忓緱鍒拌В鍐熾?/p>
浜屻佸畯瀹氫箟鎬湀
#define wait_event(wq,condition) \
do{ \
if(condition) \
break; \
__wait_event(wq,condition); \
}while(0)
鏄庢槑榪欏彞璇濆彧鎵ц涓嬈?涓轟粈涔堣繕榪樼敤do-while璇彞鍛?
鍋囪鏈夎繖鏍蜂竴涓畯瀹氫箟
#define macro(condition) \
if(condition) dosomething();
鐜板湪鍦ㄧ▼搴忎腑榪欐牱浣跨敤榪欎釜瀹忥細
if(temp)
macro(i);
else
doanotherthing();
涓鍒囩湅璧鋒潵寰堟甯革紝浣嗘槸浠旂粏鎯蟲兂銆傝繖涓畯浼氬睍寮鎴愶細
if(temp)
if(condition) dosomething();
else
doanotherthing();
榪欐椂鐨別lse涓嶆槸涓庣涓涓猧f璇彞鍖歸厤錛岃屾槸閿欒鐨勪笌絎簩涓猧f璇彞榪涜浜嗗尮閰嶏紝緙栬瘧閫氳繃浜嗭紝浣嗘槸榪愯鐨勭粨鏋滀竴瀹氭槸閿欒鐨勩備負浜嗛伩鍏嶈繖涓敊璇紝鎴戜滑浣跨敤do{鈥?}while(0) 鎶婂畠鍖呰9璧鋒潵錛屾垚涓轟竴涓嫭绔嬬殑璇硶鍗曞厓錛屼粠鑰屼笉浼氫笌涓婁笅鏂囧彂鐢熸販娣嗐傚悓鏃跺洜涓虹粷澶у鏁扮殑緙栬瘧鍣ㄩ兘鑳藉璇嗗埆do{鈥while(0)榪欑鏃犵敤鐨勫驚鐜茍榪涜浼樺寲錛屾墍浠ヤ嬌鐢ㄨ繖縐嶆柟娉曚篃涓嶄細瀵艱嚧紼嬪簭鐨勬ц兘闄嶄綆銆?br/>榪欎釜鐢ㄦ硶鍦╨inux婧愮爜涓緢甯歌銆?/p>
涓夈佸姛鑳藉己澶х殑瑙i噴
闄や簡/* */鍜?//瑙i噴浠ュ錛屼綘瑙佽繃榪欐牱鐨勮В閲婃柟娉曚簡鍚楋紵
#if(0)
........
#endif
榪欐牱鏄負浜嗚В閲婃帀鏌愭紼嬪簭,鑰屼笉褰卞搷鍏朵腑鐨?*...*/鐨勪綔鐢?渚夸簬璋冭瘯錛岃?*.....*/鏄笉鑳藉祵濂楃殑,緙栬瘧浼氬嚭閿?
鍥涖佹暟緇勫彉鑴?a[i]鍜宨[a]
鍦ㄧ▼搴忛噷鏈簲璇ョ敤a[i]錛屼絾i[a]绔熺劧鍜宎[i]杈撳嚭鐨勭粨鏋滀竴鏍楓備負浠涔堛備粖澶╂妸闂鏁寸悊濡備笅錛?br/>i[a]鏄爣鍑嗚娉曘?[]"縐頒負涓嬫爣榪愮畻絎︼紝鍏惰娉曚負錛?br/>postfix_expression [ expression ]
鍏朵腑"postfix_expression"鍜?expression"涔嬩腑蹇呴』鏈変竴涓槸鎸囬拡綾誨瀷錛堟垨鏁扮粍錛夛紝鑰屽彟涓涓槸鏁村瀷銆?br/>渚嬪涓嬮潰鐨勭▼搴忔槸瀹屽叏鍚堟硶鐨勶細
int a[]={0,1,2,3,4};
printf("%d\n",3[a]);
涓嬫爣榪愮畻絎﹀弬涓庣殑琛ㄨ揪寮忓湪姹傝В鏃朵粎浠呮槸鍋氫竴涓彉鎹㈣屽凡錛屽皢"postfix_expression [ expression ]"
鏀瑰啓涓? * ( postfix_expression + expression ) "錛屽洜姝[3]鍜?[a]鍒嗗埆鏀瑰啓涓?(a+3)鍜?(3+a)錛?br/>鍙浜岃呮槸瀹屽叏絳変環鐨勩備絾娉ㄦ剰涓嶈鐢╥[a]榪欑褰㈠紡錛屽洜涓哄畠涓嶇鍚堟棩甯鎬範鎯?br/>瀹為獙浠g爜錛?br/>#include "stdafx.h"
#include "iostream.h"
int f();
int main(int argc, char* argv[])
{
int a[20]={1,2,3,4,5,6,7,8,9};
cout<<a[f()]<<endl;
cout<<f()[a]<<endl;
return 0;
}
int f()
{
return 4;
}
瀹為獙緇撴灉錛?br/>4
4
Press any key to continue
浜斻佸弻鑳炶儙瀹氫箟鍜屽0鏄庯細int x;x;
榪欏効鏄釜鍏充簬瀹忕殑闂錛屾垜鏇劇敤榪嘇TL鐨勪覆杞崲瀹忥紝鍖呮嫭W2A錛屽紑濮嬫湁浜涗笢瑗挎垜榪樹笉澶槑鐧姐備負浜嗕嬌鐢ㄨ繖浜涘畯錛屽繀欏誨湪鍑芥暟鐨勫紑濮嬪鐢║SES_CONVERSION鏉ュ垵濮嬪寲鏌愪簺灞閮ㄥ彉閲忋傜敤灝辯敤鍚э紝浣嗘槸鐪嬬湅榪欎釜瀹忕殑瀹氫箟錛屽畠鏈夌被浼間笅闈㈢殑浠g爜錛?/p>
// 鍦╝tlconv.h鏂囦歡涓?br/>#define USES_CONVERSION \
int _convert; _convert; \
UINT _acp = GetACP(); _acp; \
LPCWSTR _lpw; _lpw; \
LPCSTR _lpa; _lpa
涓轟粈涔堝畠浠敤"int x;x;"--榪欑鍚庨潰璺熺潃鍙橀噺鐨勫0鏄庯紵
寰堝浜洪兘紕板埌榪囪繖涓護浜哄洶鎯戠殑闂錛屽悗鏉ュ彂鐜扮畝鍗曠殑絳旀鏄細紱佹緙栬瘧鍣ㄧ殑璀﹀憡淇℃伅錛坵arning錛夈傚鏋滃崟鐙湁涓琛屼唬鐮侊細
int x;
涓斾粠鏉ユ病鏈変嬌鐢ㄨ繃x錛岄偅涔堢紪璇戝櫒姹囨姤閿?unreferenced local variable錛歺",鎰忔濇槸鏈紩鐢ㄨ繃鐨勫眬閮ㄥ彉閲弜錛屽鏋滃皢璀﹀憡淇℃伅鐨勮緭鍑?br/>璋冨埌鏈澶с備負浜嗛伩鍏嶈鍘岀殑璀﹀憡錛孶SES_CONVERSION寮曠敤澹版槑鐨勫彉閲忋?/p>
int x; // 澹版槑
x; // 浣跨敤榪欎釜鍙橀噺
鍦–++涔嬪墠鐨勬椂浠o紝紼嬪簭鍛樻湁鏃跺湪C涓敤鍑芥暟褰㈠弬鍋氬悓鏍風殑浜嬫儏鏉ラ伩鍏?unreferenced formal parameter"鎴栧叾瀹冪殑娣卞ゥ璐硅В鐨勭紪璇戦敊璇?/p>
void MyFunc(int x, char y)
{
x;
y;
鈥?br/>}
褰撶劧錛岀幇鍦ㄧ敤涓嬮潰鐨勪唬鐮佸彲浠ユ洿鏈夋晥鍦板畬鎴愬悓鏍風殑浜嬫儏錛?/p>
// 鍙傛暟 x 涓嶆槸鐢?br/>void MyFunc(int /* x */)
{
鈥?br/>}