C ++:如何解决隐式声明编译错误?

问题描述

我正在学习C ++。通过这个超级基本示例,我能够执行PowerShell命令。

#include <stdio.h>
int main() {
   system("powershell.exe New-Item -ItemType File -Name cpp_test");
   return 0;
}

在Debian中编译时,出现以下(非致命错误错误消息:

$ x86_64-w64-mingw32-gcc test.c -o test.exe

test.c: In function ‘main’:
test.c:3:4: warning: implicit declaration of function ‘system’ [-Wimplicit-function-declaration]
    system("powershell.exe New-Item -ItemType File -Name cpp_test");
    ^~~~~~

我查找了implicit declaration错误,但不太了解如何将其应用于示例。有人可以向五岁的孩子解释它吗?

修订版test.cpp

#include <cstdlib>
int main() {
   system("powershell.exe New-Item -ItemType File -Name cpp_test");
   return 0;
}

解决方法

C函数system在C ++头文件<cstdlib>中声明(或在C头文件<stdlib.h>中声明)

因此,如果您的程序是C ++程序,则将程序中未使用的标头<stdio.h>替换为

#include <cstdlib>

否则写

#include <stdlib.h>

支持向后兼容性的编译器假定该函数在其他地方声明,并且无法检查该函数的调用是否正确。