所以我知道pragma是什么,以及它用于什么,但这个词本身的含义是什么?我已经在代码中多次使用它了,但我从来都不知道这个词实际意味着什么或代表什么。
答案 0 :(得分:61)
根据美国政府所有(!)文件描述Ada的设计:Rationale for the Design of the Ada® Programming Language:
一个pragma(来自希腊词的含义 action)用于指导行动 编译器的特殊方式, 但对语义没有影响 一般的程序。
我喜欢(最后警告)那里......
这个交叉引用了很好的在线希腊语词典(例如引用Martin York),它说的是pragma(πράγμα,正如asveikau对原始问题的评论){{3} }:
似乎理解的关键是 action 而不是信息。
答案 1 :(得分:18)
在数学和逻辑中,pragma是一个给定的事实,是后面的论证,问题或证据的先决条件。
答案 2 :(得分:15)
从Wikipedia(编程)拉出来:
在Ada中,编译器指令称为pragma(“实用信息”的缩写)。
虽然它没有明确表示C,但无论如何这都应该回答你的问题。但是,作为T.J.指出,这条信息没有有效的来源。
答案 3 :(得分: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
原文(就是上面所说的内容,但我没有该书的副本):
Thayer和史密斯。 “希腊词典进入Pragma”。 “新约希腊词典”。
答案 4 :(得分:3)
编程语言Ada很可能是第一个使用pragma指定预处理程序指令的编译器。这个词被用作缩写形式的“实用信息”
当设计C编程语言时,它最初没有pragma指令,但很快就添加到规范中以支持自定义编译器功能。 (即,用于intel C ++编译器的#pragma optimization_level)
从那时起,许多语言都以某种形式实现了pragma,包括C#,但它们通常仅限于构建时间警告和优化提示。
非标准C和C ++中最常见和最有用的编译指示之一是#pragma once,用于指定文件只应包含一次。