c語言函數注釋
Ⅰ c語言的一個函數,誰能給逐句注釋一下
void Translate(void)
{
unsigned char data; //聲明data為無符號字元型變數
while((Fifo_Get(&data))==0)//while循環,滿足Fifo_Get(&data)為真時進入循環(&為取址符,傳輸data變數的存放地址給帆卜彎函數)
{
switch(stateRX) //多項選擇,
{
case RCV_FE: //當stateRX的值等於RCV_FE時執行以下語句。(case的格式:case 常量 :。RCV_應該是通過在程序開頭#define RCV_FE ??得到的,??表示任何符號 )
if( data == 0xfe) //若data為0xfe(0x??表示十六進制數)時
stateRX++; //stateRX自增(相當於stateRX=stateRX+1;但執行速度更快)
else //若前面的data == 0xfe條件不成立,則執行以下語句
stateRX = RCV_FE; //賦值語句
break; //跳出switch,(若沒有這步,若case RCV_FE:成立將會一直執行下去,忽略下面的case)
case RCV_EF: //同理
if( data == 0xef) //同理
else //同理
stateRX = RCV_FE; //同理
break; //同理
case RCV_ID: //同理
LRC = 0Xff; //同理
id = data; //同理
LRC ^= data; //。。。。。這句就。。。LRC和data的各相應位進行異或再賦值給LRC(異或:位運算,法則是必須不同,否則沒有,例子:1^1=0,1^0=1,0^0=0)
stateRX++; //同理
break; //同理
case RCV_LEN: //同理
len = data; //同理
LRC ^= data; //同理
stateRX++; //同理
break;//同理
case RCV_INSTRUCT://同理
cmd = data;//同理
LRC ^= data;//同理
paraindex = 0;//同理
if(len-2<=0)//len-2<=0的意思是先len-2再判斷len-2是否小於等於零
stateRX=RCV_CHKSUM;//同理
else//同理
stateRX++; //同理弊友
break; //同理
case RCV_PARA://同理
paratmp[paraindex++] = data;//將data賦值給paratmp[paraindex],然後paraindex自增;
LRC ^= data;//同理
if( paraindex >= len-2)//同理
stateRX++; //同理
break;//同理
case RCV_CHKSUM://同理
if(LRC == data)//同理
Dispatch(); //函數Dispatch()
stateRX = RCV_FE; //同理
break; //同理
default://switch的末句,若以上case都不等於stateRX的值,則執行default後面的語句,這里default後面是brake;,這兩句態悶不要也可
break;
}
}
}不能說完,但希望能拿到這兩百塊
Ⅱ C語言程序注釋
#include<stdio.h> //標准輸入輸出庫所在的頭文件
//自定義函數聲明
void add(int *m,int *m1,int *m2,int r,int c); //矩陣加法
void sub(int *m,int *m1,int *m2,int r,int c); //矩陣減法
void mult(int *m,int *m1,int *m2,int r,int p,int c); //矩陣乘法
void disp(int *m,int r,int c); //列印數組數據(矩陣里的數據)
//主測試函數
void main()
{
int a[3][4]={{4,3,5,2},{5,1,7,3},{2,7,6,2}};
int b[3][4]={{2,4,4,-7},{4,2,5,-8},{7,-3,-4,2}};
int c[4][3]={{5,4,4},{1,3,1},{4,4,2},{7,1,3}};
int d[3][4]={0};
int e[3][4]={0};
int f[3][3]={0};
printf("\nA(3x4):\n");
disp(a[0],3,4); //顯示矩陣a
printf("\nB(3x4):\n");
disp(b[0],3,4); //顯示矩陣b
add(d[0],a[0],b[0],3,4); // 計算矩陣 a + b,並將結果存到d中
printf("\nD(3x4)=A+B:\n");
disp(d[0],3,4); //顯示a+b的結果(即d中的數據)
sub(e[0],a[0],b[0],3,4);// 計算矩陣 a - b,並將結果存到e中
printf("\nE(3x4)=A-B:\n");
disp(e[0],3,4);//顯示a-b的結果(即e中的數據)
printf("\nA(3x4):\n");
disp(a[0],3,4); // 顯示矩陣a
printf("\nC(4x3):\n");
disp(c[0],4,3); //顯示矩陣c
mult(f[0],a[0],c[0],3,4,3); //計算矩陣a*c 並將結果存到f中
printf("\nF(3x3)=A*C:\n");
disp(f[0],3,3); //顯示a*c的結果(即f中的數據)
}
//函數定義
/*
*****函數功能:兩個矩陣進行加法運算 C = A+B
*****參數: m 指向運算結果存放的二維數組(即矩陣) C的首地址
***** m1為矩形A的首地址,m2為矩形B的首地址
***** r 為矩陣的行數, c為矩陣的列數
*(m+i*c+j) = *(m1+i*c+j) + *(m2+i*c+j);這個表示將矩陣A的第i行j列的數據 與 矩陣B的第i行j列的數據 相加
然後將結果賦值給矩陣C的第i行j列數據
*(m1+i*c+j) :m1+i*c+j 這個表示指向矩陣A的第i行第j列的數據的指針,則 *(m1+i*c+j) 就表示矩陣A的第i行第j列的數據
*(m2+i*c+j) :m2+i*c+j 這個表示指向矩陣B的第i行第j列的數據的指針,則 *(m2+i*c+j) 就表示矩陣B的第i行第j列的數據
*(m+i*c+j) : m+i*c+j 這個表示指向矩陣C的第i行第j列的數據的指針,則 *(m+i*c+j) 就表示矩陣C的第i行第j列的數據
這里是用指針實現的,
*(m+i*c+j) = *(m1+i*c+j) + *(m2+i*c+j);
等價於
c[i][j] = a[i][j] + b[i][j];
*/
void add(int *m,int *m1,int *m2,int r,int c) //
{
int i,j;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
*(m+i*c+j) = *(m1+i*c+j) + *(m2+i*c+j);
}
//注釋與上邊加法類似
void sub(int *m,int *m1,int *m2,int r,int c) //兩個矩陣之間的減法運算
{
int i,j;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
*(m+i*c+j) = *(m1+i*c+j) - *(m2+i*c+j);
}
/*注釋與上邊類似,因為矩陣乘法運算公式較為復雜一些,可自行對照矩陣乘法運算公式
如矩陣c = a * b
for(k=0; k<p; k++)
t += *(m1+i*p+k) * *(m2+k*c+j); //表示將m1的第i行k列的數據 與 m2的第k行j列的數據相乘 ,
//並將p (k的值從0到p) 次結果進行累加
*(m+i*c+j)=t; //最後將這個累加的結果賦值給矩陣c的第i行第j列的數據
*/
void mult(int *m,int *m1,int *m2,int r,int p,int c)//兩個矩陣之間的乘法運算
{
int i,j,k,t;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
{
t=0;
for(k=0; k<p; k++)
t += *(m1+i*p+k) * *(m2+k*c+j);
*(m+i*c+j)=t;
}
}
//顯示列印矩陣中的數據
void disp(int *m,int r,int c)
{
int i,j;
for(i=0; i<r; i++)
{
for(j=0; j<c; j++)
printf("%6d",*(m+i*c+j));
printf("\n");
}
}
Ⅲ c語言注釋是什麼
注釋是語句這句話不全面,應該說注釋是注釋語句。
1、可以使用/*和*/分隔符來標注一行內的注釋,也可以標注多行的注釋。例如,在下列的函數原型中,省略號的意思是 open() 函數有第三個參數,它是可選參數。注釋解釋了這個可選參數的用法:
int open( const char *name, int mode, … /* int permissions */ )。
2、可以使用//插入整行的注釋,或者將源代碼寫成兩列分欄的格式,程序在左列,注釋在右列:
const double pi = 3.1415926536// pi是—個常量。
C語言是一門面向過程的計算機編程語言,與C++、C#、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
C語言描述問題比匯編語言迅速、工作量小、可讀性好、易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%-20%。因此,C語言可以編寫系統軟體。
Ⅳ C語言程序注釋
C語言編程規范-注釋
規則:
1:一般情況下,源程序有效注釋量必須在20%以上。
說明:注釋的原則是有助於對程序的閱讀理解,在該加的地方都加了,注釋不宜太多也不能太少,注釋語言必須准確、易懂、簡潔。
2:說明性文件(如頭文件.h文件、.inc文件、.def文件、編譯說明文件.cfg等)頭部應進行注釋,注釋必須列出:版權說明、版本號、生成日期、作者、內容、功能、與其它文件的關系、修改日誌等,頭文件的注釋中還應有函數功能簡要說明。
示例:下面這段頭文件的頭注釋比較標准,當然,並不局限於此格式,但上述信息建議要包含在內。
/*************************************************
Copyright (C), 1988-1999, Tech. Co., Ltd.
File name: // 文件名
Author:
Version:
Date: // 作者、版本及完成日期
Description: // 用於詳細說明此程序文件完成的主要功能,與其他模塊
// 或函數的介面,輸出值、取值范圍、含義及參數間的控
// 制、順序、獨立或依賴等關系
Others: // 其它內容的說明
Function List: // 主要函數列表,每條記錄應包括函數名及功能簡要說明
1. ....
History: // 修改歷史記錄列表,每條修改記錄應包括修改日期、修改
// 者及修改內容簡述
1. Date:
Author:
Modification:
2. ...
*************************************************/
3:源文件頭部應進行注釋,列出:版權說明、版本號、生成日期、作者、模塊目的/功能、主要函數及其功能、修改日誌等。
示例:下面這段源文件的頭注釋比較標准,當然,並不局限於此格式,但上述信息建議要包含在內。
/************************************************************
Copyright (C), 1988-1999, Tech. Co., Ltd.
FileName: test.cpp
Author:
Version :
Date:
Description: // 模塊描述
Version: // 版本信息
Function List: // 主要函數及其功能
1. -------
History: // 歷史修改記錄
<author> <time> <version > <desc>
David 96/10/12 1.0 build this moudle
***********************************************************/
說明:Description一項描述本文件的內容、功能、內部各部分之間的關系及本文件與其它文件關系等。History是修改歷史記錄列表,每條修改記錄應包括修改日期、修改者及修改內容簡述。
4:函數頭部應進行注釋,列出:函數的目的/功能、輸入參數、輸出參數、返回值、調用關系(函數、表)等。
示例:下面這段函數的注釋比較標准,當然,並不局限於此格式,但上述信息建議要包含在內。
/*************************************************
Function: // 函數名稱
Description: // 函數功能、性能等的描述
Calls: // 被本函數調用的函數清單
Called By: // 調用本函數的函數清單
Table Accessed: // 被訪問的表(此項僅對於牽扯到資料庫操作的程序)
Table Updated: // 被修改的表(此項僅對於牽扯到資料庫操作的程序)
Input: // 輸入參數說明,包括每個參數的作
// 用、取值說明及參數間關系。
Output: // 對輸出參數的說明。
Return: // 函數返回值的說明
Others: // 其它說明
*************************************************/
5:邊寫代碼邊注釋,修改代碼同時修改相應的注釋,以保證注釋與代碼的一致性。不再有用的注釋要刪除。
6:注釋的內容要清楚、明了,含義准確,防止注釋二義性。
說明:錯誤的注釋不但無益反而有害。
7:避免在注釋中使用縮寫,特別是非常用縮寫。
說明:在使用縮寫時或之前,應對縮寫進行必要的說明。
8:注釋應與其描述的代碼相近,對代碼的注釋應放在其上方或右方(對單條語句的注釋)相鄰位置,不可放在下面,如放於上方則需與其上面的代碼用空行隔開。
示例:如下例子不符合規范。
例1:
/* get replicate sub system index and net indicator */
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
例2:
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
/* get replicate sub system index and net indicator */
應如下書寫
/* get replicate sub system index and net indicator */
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
9:對於所有有物理含義的變數、常量,如果其命名不是充分自注釋的,在聲明時都必須加以注釋,說明其物理含義。變數、常量、宏的注釋應放在其上方相鄰位置或右方。
示例:
/* active statistic task number */
#define MAX_ACT_TASK_NUMBER 1000
#define MAX_ACT_TASK_NUMBER 1000 /* active statistic task number */
10:數據結構聲明(包括數組、結構、類、枚舉等),如果其命名不是充分自注釋的,必須加以注釋。對數據結構的注釋應放在其上方相鄰位置,不可放在下面;對結構中的每個域的注釋放在此域的右方。
示例:可按如下形式說明枚舉/數據/聯合結構。
/* sccp interface with sccp user primitive message name */
enum SCCP_USER_PRIMITIVE
{
N_UNITDATA_IND, /* sccp notify sccp user unit data come */
N_NOTICE_IND, /* sccp notify user the No.7 network can not */
/* transmission this message */
N_UNITDATA_REQ, /* sccp user's unit data transmission request*/
};
11:全局變數要有較詳細的注釋,包括對其功能、取值范圍、哪些函數或過程存取它以及存取時注意事項等的說明。
示例:
/* The ErrorCode when SCCP translate */
/* Global Title failure, as follows */ // 變數作用、含義
/* 0 - SUCCESS 1 - GT Table error */
/* 2 - GT error Others - no use */ // 變數取值范圍
/* only function SCCPTranslate() in */
/* this moal can modify it, and other */
/* mole can visit it through call */
/* the function GetGTTransErrorCode() */ // 使用方法
BYTE g_GTTranErrorCode;
12:注釋與所描述內容進行同樣的縮排。
說明:可使程序排版整齊,並方便注釋的閱讀與理解。
示例:如下例子,排版不整齊,閱讀稍感不方便。
void example_fun( void )
{
/* code one comments */
CodeBlock One
/* code two comments */
CodeBlock Two
}
應改為如下布局。
void example_fun( void )
{
/* code one comments */
CodeBlock One
/* code two comments */
CodeBlock Two
}
13:將注釋與其上面的代碼用空行隔開。
示例:如下例子,顯得代碼過於緊湊。
/* code one comments */
program code one
/* code two comments */
program code two
應如下書寫
/* code one comments */
program code one
/* code two comments */
program code two
14:對變數的定義和分支語句(條件分支、循環語句等)必須編寫注釋。
說明:這些語句往往是程序實現某一特定功能的關鍵,對於維護人員來說,良好的注釋幫助更好的理解程序,有時甚至優於看設計文檔。
15:對於switch語句下的case語句,如果因為特殊情況需要處理完一個case後進入下一個case處理,必須在該case語句處理完、下一個case語句前加上明確的注釋。
說明:這樣比較清楚程序編寫者的意圖,有效防止無故遺漏break語句。
示例(注意斜體加粗部分):
case CMD_UP:
ProcessUp();
break;
case CMD_DOWN:
ProcessDown();
break;
case CMD_FWD:
ProcessFwd();
if (...)
{
...
break;
}
else
{
ProcessCFW_B(); // now jump into case CMD_A
}
case CMD_A:
ProcessA();
break;
case CMD_B:
ProcessB();
break;
case CMD_C:
ProcessC();
break;
case CMD_D:
ProcessD();
break;
...
建議:
1:避免在一行代碼或表達式的中間插入注釋。
說明:除非必要,不應在代碼或表達中間插入注釋,否則容易使代碼可理解性變差。
2:通過對函數或過程、變數、結構等正確的命名以及合理地組織代碼的結構,使代碼成為自注釋的。
說明:清晰准確的函數、變數等的命名,可增加代碼可讀性,並減少不必要的注釋。
3:在代碼的功能、意圖層次上進行注釋,提供有用、額外的信息。
說明:注釋的目的是解釋代碼的目的、功能和採用的方法,提供代碼以外的信息,幫助讀者理解代碼,防止沒必要的重復注釋信息。
示例:如下注釋意義不大。
/* if receive_flag is TRUE */
if (receive_flag)
而如下的注釋則給出了額外有用的信息。
/* if mtp receive a message from links */
if (receive_flag)
4:在程序塊的結束行右方加註釋標記,以表明某程序塊的結束。
說明:當代碼段較長,特別是多重嵌套時,這樣做可以使代碼更清晰,更便於閱讀。
示例:參見如下例子。
if (...)
{
// program code
while (index < MAX_INDEX)
{
// program code
} /* end of while (index < MAX_INDEX) */ // 指明該條while語句結束
} /* end of if (...)*/ // 指明是哪條if語句結束
5:注釋格式盡量統一,建議使用"/* …… */"。
6:注釋應考慮程序易讀及外觀排版的因素,使用的語言若是中、英兼有的,建議多使用中文,除非能用非常流利准確的英文表達。
說明:注釋語言不統一,影響程序易讀性和外觀排版,出於對維護人員的考慮,建議使用中文。
Ⅳ c語言如何注釋
直接在該行需要注釋的地方加上"//"即可。
可以使用/*和*/分隔符來標注一行內的注釋,也可以標注多行的注釋。例如,在下列的函數原型中,省略號的意思是 open() 函數有第三個參數,它是可選參數。
注釋解釋了這個可選參數的用法:
int open( const char *name, int mode, … /* int permissions */ );
代碼具有較好的可移植性
C語言是面向過程的編程語言,用戶只需要關注所被解決問題的本身,而不需要花費過多的精力去了解相關硬體,且針對不同的硬體環境,在用C語言實現相同功能時的代碼基本一致,不需或僅需進行少量改動便可完成移植,這就意味著,對於一台計算機編寫的C程序可以在另一台計算機上輕松地運行,從而極大的減少了程序移植的工作強度。
以上內容參考:網路-C語言
Ⅵ C語言里有哪些注釋方法
答:在用C語言編程時,常用的注釋方式有如下幾種:
(1)單行注釋 //…
(2)多行注釋 /*…*/
(3)條件編譯注釋 #if 0…#endif
拓展資料:
對於(1),注釋只能顯示在一行內,通常出現在一條語句的右邊或者上方,對於注釋符」//」,一個注釋里只要有多餘2個』/』都可以。
對於(2),」/*…*/」不能嵌套使用,正如」if…else」中的」else」總是和隔它最近的」if」配對一樣,」/*」總是和離它最近的」*/」相配對。
針對(1)和(2)各自的缺陷,資深的程序員提出如(3)所示的注釋,該注釋的好處是能注釋大塊的程序,並且沒有嵌套的限制,也就是說在」#if 0…#endif」的」…」處可以有」//」或」/*…*/」這樣的注釋。
Ⅶ C語言文本注釋怎麼用
C語言注釋分為:行級注釋「//」和塊級注釋「/**/」。
例如:
#include<stdio.h>
intmain(){
//行級注釋只能注釋一行,常用於要注釋的代碼右邊
/*
塊級注釋可以注釋多行代碼,
常用於注釋代碼塊或函數。
*/
return0;
}
Ⅷ 用C語言編寫幾個子函數(至少四個子函數),用主函數來調用實現其功能,並對函數進行注釋
一、//調用函數事例
#include<stdio.h>
#include<string.h>
二、//計算加法函數
int add(int a, int b)
{
return a+b;
}
三、//計算減法函數
int subtract(int a, int b)
{
return a-b;
}
四、//計算乘法函數
int multiply(int a, int b)
{
return a*b;
}
(8)c語言函數注釋擴展閱讀:
函數作為另一個函數調用的實際參數出現。這種情況是把該函數的返回值作為實參進行傳送,因此要求該函數必譽埋須是有返回值的。例如: printf("%d",max(x,y)); 即是把max調用的返回值又作為printf函數的實參來使用的。在函數調用慶缺螞中還應該扮羨注意的一個問題是求值順序的問題。
Ⅸ c語言中注釋的位置
1、可以使用/*和*/分隔符來標注一行內的注釋,也可以標注多行的注釋。例如,在下列的函數原型中,省略號的意思是 open() 函數有第三個參數,它是可選參數。注釋解釋了這個可選參數的用法:
int open( const char *name, int mode, … /* int permissions */ );
2、可以使用//插入整行的注釋,或者將源代碼寫成兩列分欄的格式,程序在左列,注釋在右列:
const double pi = 3.1415926536; // pi是—個常量
(9)c語言函數注釋擴展閱讀
在 C99 標准中,單行注釋正式加入C語言,但是大部分編譯器在 C99 之前就已經開始支持這種用法。有時候,其被稱作「C++風格」的注釋,但實際上,其源自於C的前身 BCPL。
1、在引號中,如果採用/*或//分隔一個字元常量或字元串字面量(string literal),它們都不會被視為注釋的開始。例如,下面語句就沒有注釋:
printf("Comments in C begin with /* or //. " );
2、預處理器僅通過檢查注釋的結束符來檢測注釋中的字元,因此,不能嵌套塊注釋。然而,可以使用/*和*/注釋包含單行注釋的源代碼:
/* 暫時注釋掉這兩行:
const double pi = 3.1415926536; // pi是一個常量
area = pi * r * r; // 計算面積
暫時注釋到此 */