>  기사  >  백엔드 개발  >  C 프로그램에서 주석문은 명령문 뒤에만 올 수 있나요?

C 프로그램에서 주석문은 명령문 뒤에만 올 수 있나요?

青灯夜游
青灯夜游원래의
2020-12-31 14:01:0425970검색

오류, C 언어에서 주석 부분은 프로그램 실행 결과에 영향을 미치지 않습니다. 프로그램의 어느 곳에나 나타날 수 있습니다. C 언어에는 두 가지 유형의 주석이 있습니다. 하나는 "/*"로 시작하고 "*/"로 끝나는 블록 주석이고, 다른 하나는 "//"로 시작하고 개행 문자로 끝나는 한 줄 주석입니다.

C 프로그램에서 주석문은 명령문 뒤에만 올 수 있나요?

이 기사의 운영 환경: windows10 시스템, c11, thinkpad t480 컴퓨터.

관련 권장 사항: C 언어 비디오 튜토리얼

C 언어의 주석

C 언어 소스 코드를 작성할 때 코드 이해를 돕기 위해 더 많은 주석을 사용해야 합니다. C 언어에는 두 가지 주석 방법이 있습니다.

  • 하나는 /*로 시작하고 */로 끝나는 블록 주석입니다.

  • 다른 하나는 //로 시작하고 개행 문자로 끝나는 것입니다. .

/* 및 */ 구분 기호를 사용하여 한 줄 또는 여러 줄의 댓글 내에서 댓글을 표시할 수 있습니다. 예를 들어, 다음 함수 프로토타입에서 줄임표는 open() 함수에 선택적인 세 번째 매개변수가 있음을 의미합니다. 주석은 이 선택적 매개변수의 사용을 설명합니다.

int open( const char *name, int mode, … /* int permissions */ );

//를 사용하여 전체 주석 줄을 삽입하거나 왼쪽 열에 프로그램, 오른쪽 열에 주석을 사용하여 2열 형식으로 소스 코드를 작성할 수 있습니다. :

const double pi = 3.1415926536;       // pi是—个常量

C99 표준에서는 C 언어에 공식적으로 한 줄 주석이 추가되었지만 대부분의 컴파일러는 C99 이전부터 이 사용법을 지원하기 시작했습니다. 때로는 "C++ 스타일" 주석이라고도 하지만 실제로는 C의 전신인 BCPL에서 파생되었습니다.

댓글 위치

C 언어에서 댓글 부분은 프로그램 실행 결과에 아무런 영향을 미치지 않습니다. 프로그램의 어느 곳에나 나타날 수 있습니다.

예:

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

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

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

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

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

댓글 사양

2-1: 일반적으로 소스 프로그램에서 효과적인 댓글의 양은 20% 이상이어야 합니다.

참고: 댓글은 프로그램의 읽기와 이해를 돕기 위한 것입니다. 댓글은 추가해야 할 곳에 추가됩니다. 댓글 언어는 정확하고 이해하기 쉬워야 합니다. 간결한.

2-2: 파일 헤더에 주석을 달아야 하며, 주석에는 저작권, 버전 번호, 생성 날짜, 작성자, 내용, 기능, 수정 로그 등이 나열되어야 합니다.

예: 아래 헤더 파일의 헤더 코멘트는 비교적 표준적입니다. 물론 이 형식에 국한되는 것은 아니지만 위의 정보를 포함하는 것이 좋습니다.

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

2-3: 함수 헤더에 주석을 달고 함수의 목적/함수, 입력 매개변수, 출력 매개변수, 반환 값, 호출 관계(함수, 테이블) 등을 나열해야 합니다.

예: 다음 함수 설명은 비교적 표준적입니다. 물론 이 형식에 국한되지는 않지만 위의 정보를 포함하는 것이 좋습니다.

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

2-4: 코드를 작성하는 동안 주석을 달고, 코드를 수정하고, 해당 주석을 동시에 수정하여 주석과 코드의 일관성을 보장합니다. 더 이상 유용하지 않은 댓글은 삭제됩니다.

2-5: 주석의 내용은 명확하고 간결해야 하며, 주석의 모호성을 방지하기 위해 의미가 정확해야 합니다. 설명: 잘못된 의견은 도움이 되지 않을 뿐만 아니라 해롭습니다.

2-6: 주석은 설명하는 코드와 유사해야 합니다. 코드에 대한 주석은 위에 있거나 오른쪽(단일 명령문에 대한 주석)에 배치되어야 합니다. , 그 위에 있어야 합니다. 코드는 빈 줄로 구분됩니다.

예: 다음 예는 사양을 준수하지 않습니다.

예제 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;

2-7: 물리적 의미가 있는 모든 변수 및 상수에 대해 이름이 완전히 설명되지 않는 경우 다음과 같은 경우 주석을 달아야 합니다. 선언되어 있으며 물리적 의미를 설명합니다. 변수, 상수, 매크로에 대한 설명은 주석 옆이나 오른쪽 위에 배치해야 합니다.

예:

/* active statistic task number */
#define MAX_ACT_TASK_NUMBER 1000
#define MAX_ACT_TASK_NUMBER 1000 /* active statistic task number */

2-8: 데이터 구조 선언(배열, 구조, 클래스, 열거형 등 포함), 이름 지정이 완전히 자체 주석 처리되지 않은 경우 주석을 달아야 합니다. 데이터 구조에 대한 설명은 그 아래가 아닌 바로 옆에 배치되어야 합니다. 구조의 각 필드에 대한 설명은 이 필드의 오른쪽에 배치되어야 합니다.

예: 열거형/데이터/공용체 구조는 다음과 같이 설명할 수 있습니다.

/* 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 */
};

2-9: 전역 변수에는 해당 함수에 대한 설명, 값 범위, 액세스하는 함수 또는 프로시저, 액세스 시 주의 사항을 포함하여 더 자세한 설명이 있어야 합니다.

예:

/* 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;

2-10: 댓글은 설명하는 내용과 동일하게 들여쓰기됩니다.

설명: 프로그램 레이아웃을 깔끔하게 만들고 댓글을 쉽게 읽고 이해할 수 있습니다. 예: 다음 예는 깔끔하게 입력되지 않아 읽기가 약간 불편합니다.

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
}

2-11: 코드나 표현식 줄 중간에 주석을 삽입하지 마세요.

참고: 필요한 경우가 아니면 코드나 표현식 중간에 주석을 삽입하면 안 됩니다. 그렇지 않으면 코드를 쉽게 이해할 수 없게 됩니다.

2-12: 함수나 프로시저, 변수, 구조 등의 이름을 올바르게 지정하고 코드 구조를 합리적으로 구성하여 자체 주석 처리된 코드를 만듭니다.

참고: 함수, 변수 등의 이름을 명확하고 정확하게 지정하면 코드 가독성을 높이고 불필요한 주석을 줄일 수 있습니다.

2-13: 코드의 기능 및 의도 수준에서 주석을 달아 유용하고 추가 정보를 제공합니다.

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

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

/* if receive_flag is TRUE */
if (receive_flag)

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

/* if mtp receive a message from links */
if (receive_flag)

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

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

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

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

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

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

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

위 내용은 C 프로그램에서 주석문은 명령문 뒤에만 올 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.