我目前正在从头开始学习c ++,我之前使用Visual Studio开发了使用C#的应用程序,但我是一个使用C ++的总体菜鸟,我正在尝试制作一个小的控制台exe,它会释放并更新ip而练习使用标题和不同的.cpp文件。
问题在于,当我从visual studio 2015运行本地Windows调试器时,代码运行完美并完成我正在尝试的所有内容。但是当我构建并尝试运行.exe文件时,它会进入一个无限循环,无休止地说明std :: cout<<<“Realizando ipconfig Release”的输出,我已将问题本地化,当它试图运行system(“ipconfig / release”)。为什么会这样?我该如何解决?
这是标题
#pragma once
#ifndef HeaderIp
#define HeaderIp
int Release();
int Renew();
#endif // !HeaderIp
这是release.cpp
#include <stdlib.h>
int Release()
{
if (system(nullptr)==0)
{
return 0;
}
else
{
system("ipconfig /release");
return 1;
}
}
这是renew.cpp
#include <stdlib.h>;
int Renew()
{
if (system(nullptr)==0)
{
return 0;
}
else
{
system("ipconfig /renew");
return 1;
}
}
最后这是ipconfig.cpp
#include <iostream>
#include <stdlib.h>
#include "HeaderIp.h"
#include <stdio.h>
int main()
{
std::cout << "Realizando ipconfig Release" << std::endl;
int i = 0; //Bit de informacion de status de CPU
i = Release();
if (i == 0)
{
std::cout << "Error al liberar IP" << std::endl;
system("pause");
exit;
}
else
{
std::cout << "Ip Liberado correctamente" << std::endl;
}
i = Renew();
if (i == 0)
{
std::cout << "Error al renovar IP" << std::endl;
system("pause");
exit;
}
else
{
std::cout << "Ip renovado correctamente" << std::endl;
}
system("pause");
return 0;
}
答案 0 :(得分:0)
在C ++中使用system
通常discouraged是不寻常的。如果您前往manage DHCP leases using IpReleaseAddress
and IpRenewAddress
,则可能会发现您的问题消失。
您也可以使用std::cin.sync()
代替system("pause")
。
exit;
可能无法达到你想要的效果,因为你只是将引用到该功能,你不会通话它,所以......它 。
#include <stdlib.h>;
中的分号是错误的,您应该包括<cstdlib>
和<cstdio>
而不是<stdlib.h>
和<stdio.h>
。