未使用的类会不会编译
Ⅰ C#缂栬疟鍣ㄦ槸濡备綍鍒ゅ畾镆愪釜鍙橀噺娌℃湁浣跨敤杩囩殑锛熼夯鐑﹀憡璇夋垜
杩欐槸鎴戜滑镆愪釜缁勫憳鍦ㄧ紪绋嬭繃绋嬩腑鎻愬嚭镄勭枒闂銆傚洜涓鸿繖涓缂栬疟阌栾寰埚规槗阆垮厤锛屾墍浠ユ垜涓鐩翠篃娌℃湁浠旂粏𨱍宠繃杩欎釜闂棰桡纴鐩村埌鐪嬭繃浠栫殑浠g爜钖庢墠镒忚瘑鍒帮纴姝ら梾棰桦苟涓嶆槸闾d箞绠鍗旷殑銆傚厛鐪嬬湅杩欐典唬镰侊细浠g爜
class PRogram{static void Main(string[] args){byte[] buf = new byte[1024];
T t = new T();
string str = "1234";
int n = 1234;
int? nn = 1234;
DateTime dt = DateTime.Now;
object o = 1234; Console.WriteLine("finish");}}class T { } 浣犺夊缑杩欐典唬镰侀噷链夊嚑涓鍙橀噺娌℃湁浣跨敤杩囧憿锛熷傛灉浠庣▼搴忓憳镄勮掑害𨱒ョ湅锛岀瓟妗埚簲璇ユ槸镓链夊彉閲忛兘娌℃湁浣跨敤杩囥备絾缂栬疟鍣ㄧ粰鍑虹殑缁撴灉鍗存湁镣硅缭鍙岖洿瑙夛细鍙橀噺钬渟tr钬濆凡璧嫔硷纴浣嗗叾鍊间粠链浣跨敤杩
鍙橀噺钬渘钬濆凡璧嫔硷纴浣嗗叾鍊间粠链浣跨敤杩
byte[] buf2 = new byte[1024]; // 娌℃湁璀﹀憡 杩欎釜缁撴灉浼间箮琛ㄦ槑锛屽傛灉鍙傛暟璧嫔间负null锛岄偅涔堢紪璇戝櫒骞朵笉浼氱湡镄勬墽琛岃祴鍊硷纴骞朵笖鍙橀噺浼氩綋浣沧病链変娇鐢ㄨ繃銆傜敤IL妫镆ョ殑缁撴灉涔熷彲浠ヨ瘉鏄庢よ存硶锛氩圭涓琛岋纴缂栬疟鍣ㄦ病链夌敓鎴愪换浣曞瑰簲镄勮鍙ワ绂瀵圭浜屾浔鍒欎娇鐢ㄤ简newattr鎸囦护𨱒ュ垱寤烘暟缁勚傚逛簬镊瀹氢箟镄勭被锛歍 t1 = null; // 链夎﹀憡
T t2 = new T(); // 娌℃湁璀﹀憡 杩欎釜缁撴灉搴斿綋鏄鍙浠ョ悊瑙g殑锛埚敖绠″彲浠ョ悊瑙o纴浣嗘垜璁や负骞朵笉濂斤纴鐞嗙敱瑙佸悗锛夈傝槠铹舵垜浠骞舵病链夎皟鐢ㄨョ被镄勪换浣曟柟娉曪纴浣嗘槸绫荤殑鏋勯犲嚱鏁颁粛铹跺彲鑳芥墽琛屾煇浜涙搷浣滐纴镓浠ュ彧瑕佸垱寤轰简涓涓绫伙纴缂栬疟鍣ㄥ氨浼氭妸瀹冨綋浣滃凡缁忎娇鐢ㄨ繃镄勚傚逛簬锘烘湰鍊肩被鍨嬶纴鍏惰〃鐜板拰寮旷敤绫诲瀷鍙堟湁镓涓嶅悓锛岀紪璇戝櫒骞朵笉鎶婂埯濮嬭祴鍊煎綋浣滃瑰彉閲忕殑浣跨敤锛歩nt n1 = 0; // 链夎﹀憡
int n2 = 1234; // 链夎﹀憡
int? n3 = null; // 链夎﹀憡
int? n4 = 0; // 链夎﹀憡
int? n5 = 1234; // 链夎﹀憡 string浠庡疄鐜颁笂𨱒ヨ村簲褰撶畻鏄寮旷敤绫诲瀷锛屼絾琛ㄧ幇涓婂嵈镟村姞绫讳技浜庡肩被鍨嬶纴璀﹀憡淇℃伅涔熷拰鍊肩被鍨嬬浉钖屻傚逛簬绋嶅井澶嶆潅涓浜涚殑鍊肩被鍨嬶纴缁撴灉链夌偣寰濡欙细DateTime dt1; // 链夎﹀憡
DateTime dt2 = new DateTime(); // 链夎﹀憡
DateTime dt3 = new DateTime(2009,1,1); // 娌℃湁璀﹀憡
DateTime dt4 = DateTime.Now; // 娌℃湁璀﹀憡 杩欎釜缁撴灉链変竴镣规槸闇瑕佹敞镒忕殑銆傚敖绠DateTime镄勯粯璁ゆ瀯阃犲嚱鏁板拰甯﹀弬鏋勯犲嚱鏁颁粠鐢ㄦ埛瑙掑害鐪嫔悓镙锋槸鏋勯犲嚱鏁帮纴浣嗗湪缂栬疟鍣ㄧ殑瑙掑害𨱒ョ湅鍗存槸涓崭竴镙风殑銆傜敤IL鍙岖紪璇戜篃鍙浠ョ湅鍑猴纴濡傛灉璋幂敤榛樿ゆ瀯阃犲嚱鏁扮殑璇濓纴闾d箞缂栬疟鍣ㄨ皟鐢ㄧ殑鏄痠nitobj鎸囦护锛岃屽瑰甫鍙傛瀯阃犲嚱鏁拌皟鐢ㄧ殑鍒欐槸call ctor鎸囦护銆傛ゅ栵纴灏界′粠绋嫔簭锻樼殑瑙掑害𨱒ョ湅璧嫔间唬镰佺殑镙煎纺鏄瀹屽叏鐩稿悓镄勶纴浣嗙紪璇戝櫒鍗翠细镙规嵁镓璧嬬殑鍊间笉钖岃岄噰鍙栦笉钖岀殑鏋勯犵瓥鐣ワ纴杩欎篃鏄姣旇缉杩濆弽鐩磋夌殑銆傛渶钖庣殑缁撹烘瘆杈冮仐镋撅纴闾e氨鏄疌#镄勭紪璇戣﹀憡骞朵笉瓒充互缁欎篑绋嫔簭锻樿冻澶熺殑淇濇姢锛岀壒鍒鏄瀵逛簬鏁扮粍锛
byte[] buf = new byte[1024];
濡傛灉浠呮瀯阃犺繖镙蜂竴涓鏁扮粍钥屾病链変娇鐢ㄧ殑璇濓纴闾d箞缂栬疟鍣ㄥ苟涓崭细缁欎篑绋嫔簭锻树换浣曡﹀憡淇℃伅銆傚彟澶栦竴涓闂棰树篃鏄鍊煎缑钥冭槛镄勶纴澹版槑涓涓绫昏屼笉浣跨敤浠讳綍鏂规硶锛屾瘆濡备粎浠
鎴戜釜浜虹殑鐪嬫硶鏄锛屼粠浣跨敤镄勮掑害𨱒ヨ达纴杩欐槸涓嶅悎鐞嗙殑锛屽簲褰揿敖閲忛伩鍏嶏纴缂栬疟鍣ㄥ彂鐜版ょ敤娉旷殑璇濆簲璇ユ彁鍑鸿﹀憡銆傚傛灉纭瀹炴湁闇瑕佺殑璇濓纴鍙浠ラ氲繃缂栬疟鎸囦护鎴朅ttribute镄勬柟娉曟潵鐗瑰埆澹版槑𨱒ラ伩鍏嶈﹀憡淇℃伅銆傜劧钥孋#缂栬疟鍣ㄧ殑琛屼负鍗存槸涓嶅彂鍑鸿﹀憡锛岃繖涓镣规垜鏄涓嶈ゅ悓镄勚傚綋铹讹纴鎴戜篃甯屾湜澶у舵彁鍑鸿嚜宸辩殑𨱍虫硶銆
Ⅱ C++ VS2010编译器报错:未专用化的类模板不能用模板变量
呃, 好多错误...
const ID_ id 中的 const 会被编译器忽略掉, 可以不写(这个不算错误).
这是一个最基本的Error: 类定义 后面 要有 ; 结尾.
ID_ 既然是 int 的 alias, 那 类C 就是一个 非类型实参的类模板. 也就是说, C<> 的 <> 中应该是个 int的数字, 不能是 int 或者 ID_, 或者 其它类型.
对于 C++98 C++03 而言, vector<C<5> > 中最后面的 两个 大于号之间 必须要有至少一个空格. 这是语法规定. 除非你的编译器支持 C++11, 而且你在编译的时候 指定了编译选项
-std=c++14
或者
-std=c++11
最后, 一个修改后的版本:
#include<vector>
typedefintID_;
template<ID_id>
classC
{
public:
voidsay(){};
};
//typedefstd::vector<C>CVec;//报错
//typedefstd::vector<C<ID_>>CVec;//报错
//typedefstd::vector<C<int>>CVec;//报错
typedefstd::vector<C<1>>CVec;//注意:这三个是不同的类型
typedefstd::vector<C<2>>CVec;//注意:这三个是不同的类型
typedefstd::vector<C<999>>CVec;//注意:这三个是不同的类型
intmain()
{
CVecvec;
return0;
}
最最后, 欢迎交流. :)
Ⅲ C语言中已经声明或定义的变量如果在代码中没有使用到,编译器会怎样处理
就一直在那里放着。如果是全局变量,编译器连提示都没有;若是局部变量编译器在编译时会提醒说某某局部变量没有使用;若你不理会,在代码修改前就不会再提醒了。这些变量未使用,却一直占用着内存空间,但不影响代码的正确性……