GPW*_*PWR 1 c eclipse linux debian gcc
我在 C 程序中包含的唯一库是stdio.h. system()无论如何,在同一个程序中调用都是有效的,尽管 Eclipse 抱怨implicit declaration of function \xe2\x80\x98system\xe2\x80\x99 [-Wimplicit-function-declaration],无论这意味着什么。
然而,GCC(我正在使用的编译器)似乎很高兴。Eclipse 是否会在编译前自动修复问题,或者 GCC 是否会善意地这样做而不会抱怨?我对此一无所知。
\n我正在使用 GNU/Linux Debian 11 (Bullseye) Stable,如果这有什么区别的话。
\n曾几何时,C 语言的规则是,如果您调用编译器从未听说过的函数,它会悄悄地假设它是一个返回 的普通函数int。
该system()函数符合该描述。
在最新版本的 C 标准中,“隐式int”规则已被删除,并且您需要在调用所有函数之前声明它们。如果您未能声明被调用的函数,现代编译器有义务发出诊断。但是,没有什么可以阻止编译器将诊断结果视为非致命警告,并继续利用旧的假设来编译您的程序。事实上,许多编译器仍然这样做,也许是为了更容易编译根据旧规则编写的旧代码。
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |