envp代表什么
What does envp stand for?
我想知道缩写envp
代表什么,例如:
int main(int argc, char **argv, char **envp);
我也想知道argv
中最初的v
是什么。是"价值"的v
?也许是" vector"?
含义是:
-
argv
代表 arg ument v ector -
argc
for arg ument c out 和 -
envp
for env 熨斗 p ointer 。。
我们可以讨论好是坏命名惯例,但这是一种历史悠久的用法,可以追溯到C语言的开始:B.W.Kernighan和D.Ritchie在其第一版的main()
中使用了argc
和argv
> C编程语言在1978年。
后来从UNIX开发中添加了envp
,是使用environ
指针的替代方法。我在1986年的一本书中找到了对它的参考,但它肯定还年龄较大。它不需要计数,因为它的终止是无效的。请注意,它不是便携式的,因此应首选使用getenv()
。
在Kernighan和Ritchie中, c编程语言,1978, argv
在索引中显示,第221页,AS:
argv
参数向量110
第110-114页上的文本不包含argc
或argv
的推导,除了其语义外。envp
不出现在索引中。
在第二版,1988年,第114页的相应部分中的文本说:
…两个论点。第一个(常规称为
argc
,用于参数计数)是该程序被调用的命令行参数的数量;第二个(argv
,用于参数向量)是…
再次在第二版中,envp
不出现在索引中。
unix规范,IEEE STD 1003.1-2008,2016,开放组基本规格问题7 在environ
,execl
和相关例程中的部分中说:
某些实现为Main()称为Envp提供了第三个参数。这被定义为指向环境的指针。
这与envp
代表 Env 熨斗 P Ointer。
来自C语言规格:
J.5.1环境参数
1在托管环境中,main
函数接收第三个参数char *envp[]
, 这表明了零终止的指针,每个指针都指向字符串 提供有关该程序执行的环境的信息 (5.1.2.2.1)。
请注意,第三个参数未在C 语言规范中列出,尽管某些实现仍然可以。
我尚未研究传统论证名称的词源,所以请原谅我的投机性答案。
'env'显然是指环境变量。
envp中的" p"可能是参数的初始主义,也许是指指指的是类型的指针。也许甚至是 p rogram的环境变量。
词源对程序的含义并不重要,因此我建议不要过多地担心它。
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- C++避免重复声明的语法是什么
- c++库的公共头文件中应该包含什么
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- ifstream什么都没读
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 我应该使用什么来代替void作为变体中的替代类型之一
- envp代表什么