函数的隐式声明是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数的隐式声明是啥意思?相关的知识,希望对你有一定的参考价值。

一般是指函数定义域,例如f(x)=√(x-2),x<10
对于这个函数,显式的给定定义域x<10,但它有一个隐含条件x>=2,所以函数定义域为2=<x<10,x>=2即为函数的隐式声明
参考技术A 函数的隐式声明是指函数不是用显式方法声明的,如
x²+y²=r²
定义的函数y=f(x),其中r>0,-r≤x≤r,y≥0。
参考技术B 一般是指
函数定义域
,例如f(x)=√(x-2),x<10
对于这个
函数
,显式的给定
定义域
x<10,但它有一个隐含条件x>=2,所以函数定义域为2=<x<10,x>=2即为函数的
隐式声明
参考技术C   隐式声明:
  隐式声明是传统FORTRAN语言预先定义且无须通过类型声明语句对变量类型进行定义,习惯称为I-N规则。I-N规则规定:在程序中,凡是变量名以字母I、J、K、L、M、N、i、j、k、l、m、n开头的变量被默认为整型变量,以其他字母开头的变量被默认为实型变量。

mkstemp 函数的隐式声明

【中文标题】mkstemp 函数的隐式声明【英文标题】:mkstemp implicit declaration of function 【发布时间】:2014-07-15 12:19:05 【问题描述】:

我对函数mkstemp() 有疑问。 cygwin 上的 GCC 编译器生成警告:

implicit declaration of function ‘mkstemp‘

GCC 标志:-std=c99 -Wall

包括:

#include </usr/include/stdlib.h>
#include </usr/include/unistd.h>

【问题讨论】:

来自手册页:#include 为什么将编译器误导到特定路径? 是的,硬编码路径是一个非常糟糕的主意。 【参考方案1】:

在我的cygwin stdlib.h 中,mkstemp 声明像这样受到保护:

#ifndef __STRICT_ANSI__
#ifndef _REENT_ONLY
int _EXFUN(mkstemp,(char *));
#endif

好像mkstemp 不是ANSI C。确保您没有将编译器设置为强制执行特定标准(放弃c99)并且不要使用-ansi/-pedantic 标志。

另外...在您的#includes 中删除/usr/include/ 部分。编译器会为您处理这些。

【讨论】:

我想强制执行标准 c99,因为“'for' 循环初始声明只允许在 C99 模式下” 您可以使用 -std=gnu99 代替(但要注意:这会导致编译器中出现一些不符合要求的行为,包括某些浮点损坏)或 -U__STRICT_ANSI__ 在保留 C99 的同时省略 __STRICT_ANSI__ 宏功能。

以上是关于函数的隐式声明是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

函数'min'的隐式声明

C中函数的隐式声明

mkstemp 函数的隐式声明

函数“等待”的隐式声明

函数‘atoi’的隐式声明?

什么是C语言中的隐式函数声明?