c -/* ARGSUSED */等特殊注释

标签 c comments

我在 SO 上搜索过并用谷歌搜索过,但我不明白它们的含义。他们和他们的目的是什么?它们什么时候使用?我想也许我在现代编程和我们这一代人中看到它们为时已晚。

其中一些是 AFAIS,

带有 /* ARGSUSED */ 的示例代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
#define BUFSIZE 1024
#define TEN_MILLION 10000000L


/* ARGSUSED */
void *threadout(void *args) {
    char buffer[BUFSIZE];
    char *c;
    struct timespec sleeptime;

    sleeptime.tv_sec = 0;
    sleeptime.tv_nsec = TEN_MILLION;
    snprintf(buffer, BUFSIZE, "This is a thread from process %ld\n",
             (long)getpid());
    c = buffer;
    /*****************start of critical section ********************/
    while (*c != '\0') {
        fputc(*c, stderr);
        c++;
        nanosleep(&sleeptime, NULL);
    }
    /*******************end of critical section ********************/
    return NULL;
}


int main(int argc, char *argv[]) {
    int error;
    int i;
    int n;
    pthread_t *tids;

    if (argc != 2){   /* check for valid number of command-line arguments */
        fprintf (stderr, "Usage: %s numthreads\n", argv[0]);
        return 1;
    }
    n = atoi(argv[1]);
    tids = (pthread_t *)calloc(n, sizeof(pthread_t));
    if (tids == NULL) {
        perror("Failed to allocate memory for thread IDs");
        return 1;
    }
    for (i = 0; i < n; i++)
        if (error = pthread_create(tids+i, NULL, threadout, NULL)) {
            fprintf(stderr, "Failed to create thread:%s\n", strerror(error));
            return 1;
        }
    for (i = 0; i < n; i++)
        if (error = pthread_join(tids[i], NULL)) {
            fprintf(stderr, "Failed to join thread:%s\n", strerror(error));
            return 1;
        }
    return 0;
}

最佳答案

它特定于 lint 以抑制对特定问题的评论

什么是 lint - 来自维基百科

In computer programming, lint is a Unix utility that flags some suspicious and non-portable constructs (likely to be bugs) in C language source code; generically, lint or a linter is any tool that flags suspicious usage in software written in any computer language. The term lint-like behavior is sometimes applied to the process of flagging suspicious language usage. Lint-like tools generally perform static analysis of source code.

Lint as a term can also refer more broadly to syntactic discrepancies in general, especially in interpreted languages like JavaScript and Python. For example, modern lint checkers are often used to find code that doesn't correspond to certain style guidelines. Because these languages lack a compiling phase that shows a list of errors prior to execution, they can also be used as simple debuggers for common errors (showing syntactic discrepancies as errors) or hard to find errors such as heisenbugs (drawing attention on suspicious code as "possible errors").

项目

描述

/*NOTREACHED*/  Suppresses comments about unreachable code.
/*VARARGSNumber*/   Suppresses checking the following old style function declaration for varying numbers of arguments, but does check the data type of the first Number arguments. If you do not include a value for Number, the lint command checks no arguments (Number=0). The ANSI function prototypes should use the ellipsis to indicate unspecified parameters rather than this comment mechanism.
/*ARGSUSED*/    Suppresses warnings about function parameters not used within the function definition.
/*LINTLIBRARY*/     If you place this comment at the beginning of a file, the lint command does not identify unused functions and function parameters in the file. This is used when running the lint command on libraries.
/*NOTUSED*/     Suppresses warnings about unused external symbols, functions and function parameters in the file beginning at its point of occurrence. This is a superset of the /*LINTLIBRARY*/ comment directive, but applies also to external symbols. It is useful for suppressing warnings about unused function prototypes and other external object declarations.
/*NOTDEFINED*/  Suppresses warnings about used, but undefined external symbols and functions in the file beginning at its point of occurrence.
/*LINTSTDLIB*/  Permits a standard prototype-checking library to be formed from header files by making function prototype declarations appear as function definitions. This directive implicitly activates both the /*NOTUSED*/ and /*LINTLIBRARY*/ comment directives to reduce warning noise levels.

也许其他工具也可以使用它们。

您可能还会发现其他特殊评论。例如,许多 IDE 在注释中放置了自己的标记 - 例如向 TO DO 列表添加一些内容

关于c -/* ARGSUSED */等特殊注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45691200/

相关文章:

C:为什么我在一种情况下出现段错误,而在另一种情况下却没有?

c - 类型兼容性约定和函数声明

latex :将 "Comment"转换为 "Marginal Note"

jsp - JSP 标记的 Outcomment 属性

comments - JFlex 匹配嵌套注释作为一个标记

c - 将带有参数的函数传递给信号处理程序?

c - 是否可以在执行期间更改 .exe 文件?

c - 文件段错误(核心转储)(C-linux)

icalendar - iCal 文件 (.ics) 是否有注释字符

.net - 我注释掉了HTML代码,但是里面的控件没有被禁用