86

所以我知道 pragma 是什么,它的用途是什么,但是这个词本身的含义是什么?我在代码中多次使用它,但我从来不知道这个词的实际含义或代表什么。

4

5 回答 5

68

根据描述 Ada 设计的美国政府拥有的(!)文件:Ada® 编程语言设计的基本原理

编译指示(来自希腊词,意思是动作)用于以特定方式指导编译器的动作,但对程序的语义没有影响(通常)。

我喜欢那里的(最后一个警告)......

这与在线希腊词典(例如Martin York引用的)很好地交叉引用,其中说 pragma (πράγμα,正如 asveikau 对原始问题的评论)意味着

  1. 已经完成的事情,行为,既成事实
  2. 已经完成或正在完成的事情
    1. 规格。商业,商业交易
  3. 事情,问题,事件
    1. 规格。在法医意义上,法律事务,案件,诉讼
  4. 存在或存在的事物

看来理解的关键是行动这个词而不是信息

于 2010-09-24T23:05:16.490 回答
18

在数学和逻辑中,pragma 是给定的、事实,是随后的论点、问题或证明的先决条件。

于 2010-09-24T22:31:02.563 回答
16

维基百科(编程)中提取:

在 Ada 中,编译器指令称为 pragma(“语用信息”的缩写)。

虽然它没有明确用于 C,但无论如何这应该回答你的问题。然而,正如 TJ 指出的那样,这条信息没有给出有效的来源。

于 2010-09-24T21:51:01.987 回答
7

来自古希腊:

pragma:完成的事情,事实

就像所有令人讨厌的事情一样,有人为了自己的利益而试图变得过于聪明。不幸的是,我们其他人失去了它的原始含义(除非你有谷歌和手边的拉丁/希腊到英语词典)。

http://www.studylight.org/lex/grk/view.cgi?number=4229
http://www.bibletools.org/index.cfm/fuseaction/Lexicon.show/ID/G4229/pragma.htm

原件(上面那页是这么说的,但我没有那本书的副本):

塞耶和史密斯。“Pragma 的希腊语词典条目”。“新约希腊语词典”。

于 2010-09-24T22:19:21.203 回答
3

编程语言 Ada 很可能是第一个使用 pragma 来指定预处理器指令的编译器。这个词被用作“语用信息”的缩写形式

在设计 C 编程语言时,它最初没有 pragma 指令,但很快就被添加到规范中以支持自定义编译器功能。(即英特尔 C++ 编译器的#pragma optimization_level)

从那时起,许多语言都以某种形式实现了编译指示,包括 C#,但它们通常仅限于构建时间警告和优化提示。

在非标准 C 和 C++ 中,最常见和最有用的 pragma 之一是#pragma 曾经用于指定文件只应包含一次。

于 2010-09-24T22:23:47.087 回答