Maison > développement back-end > Tutoriel C#.Net > Dans un programme C, une instruction de commentaire peut-elle être située uniquement après une instruction ?

Dans un programme C, une instruction de commentaire peut-elle être située uniquement après une instruction ?

青灯夜游
Libérer: 2023-01-04 09:38:24
original
25974 Les gens l'ont consulté

Erreur, en langage C, la partie commentaire n'a aucun impact sur les résultats d'exécution du programme. Elle peut apparaître n'importe où dans le programme. Il existe deux types de commentaires en langage C : l'un est un commentaire en bloc commençant par "/*" et se terminant par "*/" ; l'autre est un commentaire sur une seule ligne commençant par "//" et se terminant par un caractère de nouvelle ligne.

Dans un programme C, une instruction de commentaire peut-elle être située uniquement après une instruction ?

L'environnement d'exploitation de cet article : système Windows10, c11, ordinateur Thinkpad T480.

Recommandations associées : Tutoriel vidéo sur le langage C

Annotations en langage C

Écriture de la source du langage C Lors du codage , vous devez utiliser davantage de commentaires pour vous aider à comprendre le code. Il existe deux méthodes de commentaire en langage C :

  • L'une est un commentaire en bloc commençant par /* et se terminant par */

  • L'autre ; est un commentaire sur une seule ligne commençant par // et se terminant par un caractère de nouvelle ligne.

Vous pouvez utiliser les délimiteurs /* et */ pour marquer les commentaires sur une seule ligne ou pour marquer les commentaires sur plusieurs lignes. Par exemple, dans le prototype de fonction suivant, les points de suspension signifient que la fonction open() a un troisième paramètre, qui est facultatif. Le commentaire explique l'utilisation de ce paramètre facultatif :

int open( const char *name, int mode, … /* int permissions */ );
Copier après la connexion

Vous pouvez utiliser // pour insérer toute une ligne de commentaires, ou écrire le code source dans un format sur deux colonnes, avec le programme dans la colonne de gauche et les commentaires dans la colonne de droite :

const double pi = 3.1415926536;       // pi是—个常量
Copier après la connexion

Dans le standard C99, les commentaires sur une seule ligne ont été officiellement ajoutés au langage C, mais la plupart des compilateurs avaient commencé à prendre en charge cet usage avant C99. Parfois, ils sont appelés commentaires « de style C++ », mais en fait ils sont dérivés de BCPL, le prédécesseur du C.

Position des commentaires

En langage C, la partie commentaire n'a aucun impact sur les résultats d'exécution du programme. Elle peut apparaître n'importe où dans le programme.

Exemple :

int/*....*/i;                                   //正确

char* s="abcdefgh   //hijklmn";                  //正确

in/*...*/ti;                                    //错误注释会被空格替换

//注意:             /*...*/不能嵌套 ,/*总是与离他最近的*/匹配

 y=x/*p           //       该语句由于没有找到*/ 会报错
 
//要实现以上功能  可以用y=x/(*p)或y=x/ *p代替
Copier après la connexion

Spécification des commentaires

2-1 : En général, le nombre de commentaires effectifs dans le programme source doit être supérieur à 20 %.

Remarque : Le principe des commentaires est d'aider à la lecture et à la compréhension du programme. Ils sont ajoutés là où ils doivent être ajoutés. Les commentaires ne doivent pas être trop nombreux ni trop peu nombreux. Le langage des commentaires doit être précis, simple. comprendre et concis.

2-2 : L'en-tête du fichier doit être commenté, et les commentaires doivent lister : mention de copyright, numéro de version, date de génération, auteur, contenu, fonction, journal des modifications, etc.

Exemple : Les commentaires d'en-tête du fichier d'en-tête ci-dessous sont relativement standards. Bien sûr, ils ne se limitent pas à ce format, mais il est recommandé d'inclure les informations ci-dessus.

/*****************************************************************************
Copyright: 1988-1999, Huawei Tech. Co., Ltd.
File name: 文件名
Description: 用于详细说明此程序文件完成的主要功能,与其他模块或函数的接口,输出值、取值范围、含义及参数间的控制、顺序、独立或依赖等关系
Author: 作者
Version: 版本
Date: 完成日期
History: 修改历史记录列表, 每条修改记录应包括修改日期、修改者及修改内容简述。
*****************************************************************************/
Copier après la connexion

2-3 : L'en-tête de la fonction doit être commenté, répertoriant : le but/la fonction de la fonction, les paramètres d'entrée, les paramètres de sortie, la valeur de retour, la relation d'appel (fonction, table), etc.

Exemple : les commentaires de fonction suivants sont relativement standards. Bien sûr, ils ne se limitent pas à ce format, mais il est recommandé d'inclure les informations ci-dessus.

/*************************************************
Function: // 函数名称
Description: // 函数功能、性能等的描述
Calls: // 被本函数调用的函数清单
Called By: // 调用本函数的函数清单
Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序)
Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)
Input: // 输入参数说明,包括每个参数的作// 用、取值说明及参数间关系。
Output: // 对输出参数的说明。
Return: // 函数返回值的说明
Others: // 其它说明
********************************************/
Copier après la connexion

2-4 : Commentez lors de l'écriture du code, modifiez le code et modifiez les commentaires correspondants en même temps pour assurer la cohérence des commentaires et du code. Les commentaires qui ne sont plus utiles sont supprimés.

2-5 : Le contenu de l'annotation doit être clair et concis, et la signification doit être précise pour éviter toute ambiguïté dans l'annotation. Explication : les mauvais commentaires sont non seulement inutiles, mais nuisibles.

2-6 : Les commentaires doivent être proches du code qu'ils décrivent. Les commentaires sur le code doivent être placés au-dessus ou à droite (commentaires sur une seule instruction) à côté d'eux. comme ci-dessus. Il doit être séparé du code ci-dessus par une ligne vide.

Exemple : L'exemple suivant n'est pas conforme à la spécification.

Exemple 1 :

/* get replicate sub system index and net indicator */
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
Copier après la connexion
Copier après la connexion

Exemple 2 :

repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
/* get replicate sub system index and net indicator */
Copier après la connexion

doit être écrit comme suit

/* get replicate sub system index and net indicator */
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
Copier après la connexion
Copier après la connexion

2-7 : Pour toutes les variables et constantes ayant une signification physique , Si sa dénomination n'est pas suffisamment explicite, elle doit être annotée pour expliquer sa signification physique lorsqu'elle est déclarée. Les commentaires sur les variables, les constantes et les macros doivent être placés à côté ou à droite au-dessus d'eux.

Exemple :

/* active statistic task number */
#define MAX_ACT_TASK_NUMBER 1000
#define MAX_ACT_TASK_NUMBER 1000 /* active statistic task number */
Copier après la connexion

2-8 : Déclaration de structure de données (y compris les tableaux, les structures, les classes, les énumérations, etc.), si sa dénomination n'est pas entièrement auto-annotée, elle doit l'être . Les commentaires sur la structure des données doivent être placés à côté et non en dessous ; les commentaires sur chaque champ de la structure doivent être placés à droite de ce champ.

Exemple : La structure énumération/données/union peut être décrite comme suit.

/* 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 */
};
Copier après la connexion

2-9 : les variables globales doivent avoir des commentaires plus détaillés, y compris des descriptions de leurs fonctions, des plages de valeurs, les fonctions ou procédures qui y accèdent et les précautions lors de leur accès.

Exemple :

/* 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 modual can modify it, and other */
/* module can visit it through call */
/* the function GetGTTransErrorCode() */ // 使用方法
BYTE g_GTTranErrorCode;
Copier après la connexion

2-10 : Les commentaires sont mis en retrait de la même manière que le contenu qu'ils décrivent.

Description : Cela peut rendre la mise en page du programme soignée et faciliter la lecture et la compréhension des commentaires. Exemple : L'exemple suivant n'est pas bien rédigé, ce qui le rend légèrement difficile à lire.

void example_fun( void )
{
/* code one comments */
CodeBlock One
/* code two comments */
CodeBlock Two
}
Copier après la connexion
Copier après la connexion

doit être remplacé par la mise en page suivante.

void example_fun( void )
{
/* code one comments */
CodeBlock One
/* code two comments */
CodeBlock Two
}
Copier après la connexion
Copier après la connexion

2-11 : Évitez d'insérer des commentaires au milieu d'une ligne de code ou d'expression.

Remarque : Sauf nécessité, les commentaires ne doivent pas être insérés au milieu du code ou des expressions, sinon cela rendra facilement le code moins compréhensible.

2-12 : Rendre le code auto-commentaire en nommant correctement les fonctions ou procédures, les variables, les structures, etc. et en organisant rationnellement la structure du code.

Remarque : une dénomination claire et précise des fonctions, des variables, etc. peut augmenter la lisibilité du code et réduire les commentaires inutiles.

2-13 : Commentez au niveau de la fonction et de l'intention du code pour fournir des informations utiles et supplémentaires.

说明:注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。

示例:如下注释意义不大。

/* if receive_flag is TRUE */
if (receive_flag)
Copier après la connexion

而如下的注释则给出了额外有用的信息。

/* if mtp receive a message from links */
if (receive_flag)
Copier après la connexion

2-14:在程序块的结束行右方加注释标记,以表明某程序块的结束。

说明:当代码段较长,特别是多重嵌套时,这样做可以使代码更清晰,更便于阅读。示例:参见如下例子。

if (…)
{
// program code
while (index < MAX_INDEX)
{
// program code
} /* end of while (index < MAX_INDEX) */ // 指明该条while 语句结束
} /* end of if (…)*/ // 指明是哪条if 语句结束
Copier après la connexion

2-15:注释格式尽量统一,建议使用“/*…… */”。

2-16:注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达。

说明:注释语言不统一,影响程序易读性和外观排版,出于对维护人员的考虑,建议使用中文。

更多编程相关知识,请访问:编程教学!!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal