預設情況下,CSDN的模板已經載入了SyntaxHighlighter的所需檔案。
SyntaxHighlighter使用<pre>及<textarea>作為顯示代碼的容器,但目前CSDN好像只支援<textarea>. 此外,CSDN的線上編輯功能常常過於主動地為<pre>的內容加上<br />,從而破壞<pre>原有內容,因此,在CSDN中不推薦使用<pre>,否則,要花很多時間為其重新整容。
在CSDN中使用SyntaxHighlighter, <textarea>的name及class屬性是必須指定的。name必須為”code”,class則根據需求設定。上例是C++代碼,其class設定為”cpp”. 如果是C#代碼,class則應設為”c-sharp”。而rows及cols屬性可以不設。SyntaxHighlighter會自動根據頁面來設定其值。但在編輯過程中,為這兩個屬性設定初始值可方便輸入代碼。我的體會是,如果是在CSDN線上寫博,可將rows設為10,將cols設為95,可得到較好的編輯環境。
#include <stdio.h> </p><p>int main()<br />{<br /> printf("Thanks SyntaxHighlighter!!/n);<br /> return 0;<br />}
由於不支援彙編的,所以用老羅代碼著色器也不錯。效果如下:
;********************************************************************
;API函數PathFindExtensionA By G-Spider[月窟]
;PathFindExtension功能:返回形如路徑“D:/masm32/examples/exampl05/lcd.lcd.asm"串的尾碼串".asm"的頭指標
;輸入參數:路徑指標lpPathBuffer,可以由lpstrFile得到
;傳回值:eax
;********************************************************************
PathFindExtension Proc uses ESI lpPathBuffer:DWORD
;----------------------------------------------------------------------
mov eax,lpPathBuffer
XOR ESI,ESI
TEST EAX,EAX
JE SHORT L77F5F625
MOV CL,BYTE PTR DS:[EAX]
TEST CL,CL
JE SHORT L77F5F625
L77F5F603 :
CMP CL,20h ;20H=32D,為ASCII代碼SPACE,即查看是不是空白字元
JE SHORT L77F5F62A ;如果是SPACE,則跳轉
CMP CL,2Eh ;2EH=46D,為ASCII代碼 '.',即查看是否為點號
JE SHORT L77F5F5E5 ;如果是點號,則跳轉
CMP CL,5Ch ;5CH=92D,為ASCII代碼'/',即查看是否為分隔斜杠
JE SHORT L77F5F62A ;如果是斜杠,則跳轉
L77F5F612 :
PUSH EAX
CALL CharNextA
MOV CL,BYTE PTR DS:[EAX]
TEST CL,CL
JNZ SHORT L77F5F603
TEST ESI,ESI
JE SHORT L77F5F625
MOV EAX,ESI
L77F5F625 :
ret
L77F5F62A :
XOR ESI,ESI ;說明'.'點號後面的不是尾碼形式,於是將該指標清0,不用再儲存這個點的指標值
JMP SHORT L77F5F612
L77F5F5E5 :
MOV ESI,EAX ;若為'.'點符,則用ESI儲存其指標值
JMP SHORT L77F5F612 ;接著判斷下一位字元
;----------------------------------------------------------------------
PathFindExtension EndP
;********************************************************************