『壹』 計算機通過什麼可以查詢程序代碼
10 代碼編輯、編譯、審查
10-1:打開編譯器的所有告警開關對程序進行編譯。
10-2:在產品軟體(項目組)中,要統一編譯開關選項。
10-3:通過代碼走讀及審查方式對代碼進行檢查。
說明:代碼走讀主要是對程序的編程風格如注釋、命名等以及編程時易出錯的內容進行檢查,可由開發人員自己或開發人員交叉的方式進行;代碼審查主要是對程序實現的功能及程序的穩定性、安全性、可靠性等進行檢查及評審,可通過自審、交叉審核或指定部門抽查等方式進行。
10-4:測試部測試產品之前,應對代碼進行抽查及評審。
10-1:編寫代碼時要注意隨時保存,並定期備份,防止由於斷電、硬碟損壞等原因造成代碼丟失。
10-2:同產品軟體(項目組)內,最好使用相同的編輯器,並使用相同的設置選項。
說明:同一項目組最好採用相同的智能語言編輯器,如Muiti Editor,Visual Editor等,並設計、使用一套縮進宏及注釋宏等,將縮進等問題交由編輯器處理。
10-3:要小心地使用編輯器提供的塊拷貝功能編程。
說明:當某段代碼與另一段代碼卜讓前的處理功能相似時,許多開發人員都用編輯器提供的塊拷貝功能來完成這段代碼的編寫。由於程序功能相近,故所使用的變數、採用的表達式等在功能及命名上可能都很相近,所以使用塊拷貝時要注意,除了修改相應的程序外,一定要把使用的每個變數仔細查看一遍,以改成正確的。不應指望編譯器能查出所有這種錯誤,比如當使用的是全局變數時,就有可能使某種錯誤隱藏下來。
10-4:合理地設計軟體系統目錄,方便開發人員使用。
說明:方便、合理的軟體系統目錄,可提高工作效率。目錄構造的原則是方便有關源程序的存儲、查詢、編譯、鏈接等工作,同時目錄中還應具有工作目錄----所有的編譯、鏈接等工作應在此目錄中進行,工具目錄----有關文件編輯器、文件查找等工具可存放在此目錄中。
10-5:某些語句經編譯後產生告警,但如果你認為它是正確的,那麼應通過某種手段去掉告警信息。
說明滑碼:在Borland C/C++中,可用「#pragma warn」來關掉或打開某些告警。
示例:
#pragma warn -rvl //型清 關閉告警
int examples_fun( void )
{
// 程序,但無return語句。
}
#pragma warn +rvl // 打開告警
編譯函數examples_fun時本應產生「函數應有返回值」告警,但由於關掉了此告警信息顯示,所以編譯時將不會產生此告警提示。
10-6:使用代碼檢查工具(如C語言用PC-Lint)對源程序檢查。
10-7:使用軟體工具(如 LogiSCOPE)進行代碼審查。
『貳』 用威綸觸摸屏軟體EB8000反編譯的時候出現格式錯誤報警,是咋回事呢
文件丟失,觸摸屏程序復制到其他電腦就用不了,因為有配置文件你沒復制全。
『叄』 什麼是編譯開關 pascal
在編譯窗口中連按兩下「ctrl+o」可以在程序頭中出現所有編譯開關情況,也可以自己書寫。
下面是一些常見開關所代表的意思:
1)數據對齊(Align Data)
{$A+}或{$A-}
在{$A+}狀態下,將非字元按偶地址對齊存放,可以提高8086和80286存取數據的速度。不影響位元組變數、記錄域結構和數組元素。在{$A-}狀態下,將使用位元組對齊方式,數據可存放在奇地址或偶地址。
2)布爾運算(Boolean Evaluation)
{$B+}或{$B-}
在{$B+}狀態下,編譯器產生完全布爾表達式運算代碼。布爾表達式中的每個操作都確保被計算。既是整個表達式的結果以確定,還繼續運算其餘的表達式。
在{$B-}狀態下,編譯器產生短路布爾表達式運算代碼。接著從左到右運算,當整個表達式結果確定後,就停止運算。
3)調試信息(Debug Information)
{$D+}或{$D-}
{$D+}產生調試信息,它在編譯程序或單元產生運行錯誤時,能自動定位引起錯誤的語句。
4)浮點模擬(Emulation)
{$E+}或{$E-}
{$E+}只是在8087協處理器不存在時,將連接運行庫以便對協處理器進行模擬。
{$N+,$E+}狀態編譯程序,系統將同8087模擬器連接,得到exe文件,不管有無8087,都可以在機器上進行IEEE標准754的二進制浮點運算。
{$N+,$E-}狀態下,只能在有8087時,才能進行IEEE標准754的二進制浮點運算。
8087模擬開關如果用在一個單元是無效的,它只能用於程序的編譯。
5)輸入輸出檢查(Input/Output Checking)
{$I+}或{$I-}
$I指示控制是否自動產生對調用過程的結果進行檢查。
6)數字處理(Numberic Processing)
{$N+}或{$N-}
{$N-}狀態,在機器上只能進行實數類型運算。在{$N+}狀態,在有8087協處理器或沒有用{$E+}指示對8087進行模擬,都可以對IEEE浮點類型進行運算。
7)范圍檢查(Range Checking)
{$R+}或{$R-}
$R+進行邊界和范圍檢查
8)棧溢出檢查(Stack Overflow Checking)
{$S+}或{$S-}
在{$S+}狀態下編譯,程序在每個過程或函數的開始生成一段代碼,用於檢查是否有足夠的棧空間供局部變數使用。若棧空間不夠,程序停止運行,並顯示運行錯誤。
在{$S+}狀態下這樣調用會導致系統崩潰。
9)變數串檢查(Var String Checking)
{$V+}或{$V-}
在{$V+}狀態下,實行嚴格的類型檢查,要求形參、實參具有同一字元串類型。
在{$V+}狀態下,允許任意類型的字元串變數作為實參,甚至是一實參的最大長度不同於形參長度。
BP7下的最佳參數是:
{$A+,B-,D-,E-,F-,G+,I-,L-,N+,O-,P+,Q-,R-,S-,T-,V-,X+,Y-}
{$M 65520,0,655360}
其中D和L與調試有關,調試時必須打開這兩個參數
N+可以使程序能夠使用擴展實型。一般情況下,Real速度最慢,不應該使用。
在編輯環境下按Ctrl+O+O,可以自動列出默認的編譯指示,然後再自己改,這樣比較快
要想知道各個參數的意義,可以察看BP7的聯機幫助文檔
『肆』 西門子300plc編譯下載時提示警告,塊ob1已在cpu中存在,結果並未下載。是什麼原因該怎麼解
1,檢查cpu的開關撥到了STOP狀態
2,用PLC的撥碼清空程序。也可以點S7的在線按鈕(會顯示PLC裡面的程序塊和程序塊存儲位置)看下是不是真的有組態程序
3,你的程序定址范圍或I/O過程映像超出CPU的范圍。檢查方法如下:SIMATIC管理器,打開你要下載的程序,選擇菜單「Optionals」/Reference Data/Display「(選項/參考數據/顯示),在出現的對話框中,在」Customize「(顧客化)中選擇」Cross Reference「(交叉參考表),在出現的參考表中檢查相應的位存儲器區地址和I/O映像輸入輸出是否真的超出范圍
4,OB1里調用了CPU不支持的程序或指令。
5,調用了不支持的SFC/SFB
6,變數地址超出了范圍
先檢查這些吧。看下問題可以解決不(最多發生的是3)
『伍』 opencv,vc++6.0,編譯程序老是出錯和警告; warning D4002 : ignoring unknown option '/Qwd167'
你好:
error C1010: unexpected end of file while looking for precompiled header directive.
可能原因為工程中 stdafx.h 未包含。
//
在VC 6.0中編譯c++程序時報該錯原因為需要一個預編譯的文件stdafx.h, 如果不需要編譯該頭文件的話,只需要塵伏棗打開seting 頁面設置中在c/c++欄,選擇PreCompiled headers,然後設置第一選項,選擇不使用預編譯頭,解決這個問題。
或者
直接打開dsp工程文件廳羨,找到 /Yu"stdafx.h"去掉即可派拆。
//
一般來說,在編譯某個文件時,往往發現編譯器指向某個源碼文件的末尾,並且提示以上信息時,直接在cpp頂上加一項"stdafx.h".
而且不管文件所處是否和stdafx.h文件在同一目錄中。編譯後即可通過,沒必要去修改編譯開關。一般而言:預編譯功能是解決大量標頭文件重復編譯的問題。
在stdafx.h頭中,我們一般把那些公用的頭文件放置在其中。特別是調用dll組件包時,dll引入到工程中。
『陸』 編譯這樣的告警怎麼消除掉
樓主這是什麼工具?這個是編譯告警還是運行時候的告警?
從字面來看是
1、第一個告警是隱式定義系統山飢告函數strcmp,這個肢敬包含逗明一下頭文件就可以了。具體參照二樓的包含string.h,如果樓主是windows操作系統的話,有個最全的頭文件windows.h,直接包含進來省事了。
#include <windows.h>或者
#include <string.h>
2、第二個告警是隱式類型轉換,int(整數)到unsigned int(無符號整數)會導致精確度丟失。strlen返回的是字元串的長度,長度不會是負數,所以一定是無符號的。樓主的len定時成unsigned int就行了。
int len改成
unsigned int len就行了。
或者
len = (int)strlen(codeb);顯示的強制類型轉換。
樓主的編譯器很嚴格,一般編譯器對這種告警都是忽略的。樓主忽略也可。
『柒』 java程序可以編譯 但是會有警告 為什麼呢
告警是編譯時檢查發現不符合一些常用約定,但是不妨礙執行。
ThestaticfieldText3.ishouldbeaccessedinastaticway
以下是修改過的代碼。
publicclassText3{
staticinti=47;//靜態方法共用內存
publicvoidcall(){
System.out.println("調用call方法");
for(i=0;i<3;i++){
System.out.print(i+"");
if(i==2){
System.out.println();
}
}
}
publicstaticintgetI(){
returni;
}
publicstaticvoidsetI(inti){
Text3.i=i;
}
publicText3(){
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Text3t1=newText3();
Text3t2=newText3();
Text3.setI(60);//這里有警告
Text3.i++;
System.out.println("第一個實例對象調用變數i的結果為i="+Text3.getI());//這里有警告
t1.call();//調用call方法後,i的值變成了3
Text3.i++;
System.out.println("第二個實例對象調用變數i的結果為i="+Text3.getI());//這里有警告
t2.call();
}
}
『捌』 關於c++中float fnum=0.1編譯警告的問題
0.1默認是double類型,double類型向float類型賦值會有精度丟失。
消除編譯告警的話,在0.1後面加一個f,即0.1f,告正握警編譯器這個是float類型握陪,舉皮慶就不會出編譯告警了。