欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于C++中常見編譯錯誤的總結詳解

 更新時間:2013年05月16日 16:49:04   作者:  
本篇文章是對C++中的常見編譯錯誤進行了詳細的分析介紹,需要的朋友參考下
在日常編碼過程中會遇見各種編譯錯誤,本文對常見的編譯錯誤進行分析總結。(基本的編譯錯誤在這里不列舉,后續(xù)后持續(xù)更新)

1、error c101008a解決方法
該錯誤出現(xiàn)在項目升級過程中會出現(xiàn),比如說項目從vs2008升級到vs2010.
解決辦法:在項目上點右鍵,清理(Clean),重新編譯,問題解決

2、error C2252解決方法
該錯誤主要在項目從vs2008升級到vs2010出先。
error C2252: an explicit instantiation of a template can only occur at namespace scope
解決方法:將特例話的模板移到類外面(It is saying that you cannot explicitly instantiate a template inside a function or a class.Move it to outside the function or class.)

3、error C2143:語法錯誤:缺少“;”(在“*”的前面)
該錯誤主要是某類型數(shù)據未include,可能是都文件拼寫錯誤、或者頭文件名已經更改、或是頭文件忘記“;”
解決辦法:檢查頭文件是否更名、是否忘記結束的“;”

4、error C1010:查找預編譯頭時遇到意外的文件結尾。是否忘記了向源中添加“#include "StdAfx.h”
解決辦法:在報錯行所在的文件的最前面添加“#include "StdAfx.h”

5、error C1189:出現(xiàn)了WINDOWS.H already included. MFC apps must not #include <windows.h>的處理辦法。
解決辦法:把#include<afxwin.h>提到最前面去就可以編譯成功了。

6、error LNK2005: _DllMain@12 already defined in dllmain.obj
解決辦法:你只需要在工程設置里面把WIN32,NDEBUG,_WINDOWS,_MBCS,_USRDLL,MSGBOX_EXPORTS,_WINDLL,_AFXDLL
中的_USRDLL,刪除,就可以正確編譯了

7、R6010錯誤,出現(xiàn)R6010錯誤的原因很多
1、數(shù)據庫缺少一個視圖、
2、數(shù)據庫某個存儲過程名發(fā)生變化,也可能是參數(shù)個數(shù)發(fā)生變化。
3、exe和dll是否混用的不同版本的crt
4、內存資源未釋放
5、輸出參數(shù)不正確
總之:windows將自身無法定位到的錯誤類型都歸結為R6010錯誤

8、error C2361:initialization of
error C2361: initialization of 'iter2' is skipped by 'default' label
解決辦法:出現(xiàn)這個問題原因是因是switch沒有正常的初始化,只需要在iter2的位置控制其作用域即可,在這里添加{}就可以了。
案例分析:來自實際項目的一段代碼,簡化形式如下:
 switch (t)
 {
 case 0:
  int a = 0;
  break;
 default:
  break;
 }
有什么問題嗎?似乎沒有。請用編譯器編譯一下……
嗯?!一個錯誤“error C2361: initialization of 'a' is skipped by 'default' label”。這怎么可能?
幾番思琢,悟出解釋:
C++約定,在塊語句中,對象的作用域從對象的聲明語句開始直到塊語句的結束,也就是說default標號后的語句是可以使用對象a的。
如果程序執(zhí)行時從switch處跳到default處,就會導致對象a沒有被正確地初始化。
確保對象的初始化可是C++的重要設計哲學,所以編譯器會很嚴格地檢查這種違例情況,像上述的示例代碼中default語句后面并沒有使用a,
但考慮到以后代碼的改動可能無意中使用,所以一樣被封殺。
明白了原因,解決起來就很容易了。只要明確地限制對象a的作用域就行了。
 switch (t)
 {
 case 0:
  { //added for fix problem
  int a = 0;
  break;
  } //added for fix problem
 default:
  break;
 }
在switch...case...結構中不能在case中定義新變量,for(int i = 0;...)
除非將定義新變量的case用塊{}包住,或者選擇將你的新變量在switch之前。

9、Link2019:unresolved external symbol 'symbol' referenced in function 'function'
函數(shù)只有申明,沒有實現(xiàn)時,或是DLL中的函數(shù)沒有export

相關文章

  • C++ 中重載和運算符重載加號實現(xiàn)矩陣相加實例代碼

    C++ 中重載和運算符重載加號實現(xiàn)矩陣相加實例代碼

    這篇文章主要介紹了C++ 中重載和運算符重載加號實現(xiàn)矩陣相加實例代碼的相關資料,需要的朋友可以參考下
    2017-03-03
  • C++ 關于MFC多線程編程的注意事項

    C++ 關于MFC多線程編程的注意事項

    這篇文章主要介紹了C++ 關于MFC多線程編程的注意事項的相關資料,需要的朋友可以參考下
    2015-06-06
  • c++的virtual和override作用及說明

    c++的virtual和override作用及說明

    這篇文章主要介紹了c++的virtual和override作用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 使用kendynet構建異步redis訪問服務

    使用kendynet構建異步redis訪問服務

    這篇文章主要介紹了在kendynet上寫的一個簡單的redis異步訪問接口,大家參考使用吧
    2014-01-01
  • C語言與C++中const的用法對比

    C語言與C++中const的用法對比

    C語言中的const與C++有很大的不同,在C語言中用const修飾的變量仍是一個變量,表示這個變量是只讀的,不可顯示地更改,而在C++中用const修飾過后,就變成常量了
    2022-04-04
  • C++ Boost EnableIf函數(shù)使用介紹

    C++ Boost EnableIf函數(shù)使用介紹

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • 單詞小助手C語言版

    單詞小助手C語言版

    這篇文章主要為大家詳細介紹了C語言版的單詞小助手,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C語言實現(xiàn)時區(qū)轉換函數(shù)的實例

    C語言實現(xiàn)時區(qū)轉換函數(shù)的實例

    這篇文章主要介紹了C語言實現(xiàn)時區(qū)轉換函數(shù)的實例的相關資料,這里分析需求并提供實現(xiàn)代碼,需要的朋友可以參考下
    2017-08-08
  • C語言+win32api寫窗體應用程序

    C語言+win32api寫窗體應用程序

    本文給大家分享的是個人使用純C語言結合win32api制作窗體應用程序的代碼,非常的簡單,給需要的小伙伴參考下。
    2016-02-02
  • C語言數(shù)據結構之迷宮求解問題

    C語言數(shù)據結構之迷宮求解問題

    這篇文章主要為大家詳細介紹了C語言數(shù)據結構之迷宮求解問題,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03

最新評論