【问题标题】:How do I call “@” at-symbol quotation in C?如何在 C 中调用“@”at-symbol 引号?
【发布时间】:2019-12-02 15:49:43
【问题描述】:

看过 Fossil 的代码 [https://fossil-scm.org/home/annotate?filename=src/schema.c&checkin=b03652382a327740 L27..]:

    /*
    ** The database schema for the ~/.fossil configuration database.
    */
    const char zConfigSchema[] =
    @ -- This file contains the schema for the database that is kept in the
    @ -- ~/.fossil file and that stores information about the users setup.
    @ --
    @ CREATE TABLE global_config(
    @   name TEXT PRIMARY KEY,
    @   value TEXT
    @ );
    @
    @ -- Identifier for this file type.
    @ -- The integer is the same as 'FSLG'.
    @ PRAGMA application_id=252006675;
    ;

我想知道@... 语法的用途是什么。我以前从未见过它,我不知道如何调用它来搜索它。 “C 中的字符串文字扩展”以及对其的各种改写都不会产生任何结果。

尽管这个问题很琐碎,但为了更好地被发现,请考虑留下这个问题。谢谢。

【问题讨论】:

  • 它看起来像一个预处理器使用的标记。

标签: c language-features


【解决方案1】:

来自项目的“BUILD.txt”:

  • 大多数 *.c 源文件都使用名为 “翻译”。要翻译的来源可以在 src/translate.c 中找到。 src/translate.c 中的标题注释详细解释了它的作用。

更多信息可以直接在referenced file 中找到,但它似乎用于更好地处理 C 中的 CGI 功能,尤其是在生成 HTML 时。

“src/translate.c”中提供的概要如下:

** 以“@”字符开头的输入行被翻译成
** cgi_printf() 语句或字符串文字和
** 翻译后的代码写在标准输出上。
**
** 本程序试图解决的问题如下:When
** 用 C 编写 CGI 程序,我们通常要输出大量的 HTML
** 文本到标准输出。在纯 C 代码中,这涉及到执行一个
** printf() 带有一个包含所有文本的大字符串。但是我们有
** 为许多常用字符插入特殊代码(例如:\n 和 \"),
** 这会干扰 HTML 的可读性。
**
** 这个工具允许我们将原始 HTML 放入
** C 程序的中间部分。该程序然后翻译文本
** 通过插入所有必要的反斜杠和其他
** 标点符号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-05
    • 2018-02-02
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2014-05-08
    • 2011-07-04
    • 1970-01-01
    相关资源
    最近更新 更多