C++:Setenv().Visual Studio中未定义的标识符
C++: Setenv(). Undefined identifier in Visual Studio
根据我在网上找到的所有文档,我的代码似乎是正确的。我的IDE是MS Visual Studio Xpress 4 Windows Desktop 2012,它的编译器正在抛出错误:
CCD_ 1。
帮帮我!!!
#include <windows.h>
#include <sstream>
#include <ostream>
#include <cstdlib>
#include <iostream>
#include <stdlib.h>
using namespace std;
int howManyInClass = 0;
int main(){
long checklength = sizeof(getenv("classSize"))/sizeof(*getenv("classSize"));
if (checklength==0){
cout<<"Please enter the ammount of students in your class";
cin>> howManyInClass;
cin.ignore();
setenv("classSize", howManyInClass, 1);}
};
Microsoft的运行库不支持标准的setenv()
函数。您可以使用它们的替代_putenv()
,或者,对于可移植代码,我更喜欢使用简单的包装器。
这是我的标准接口包装:
int setenv(const char *name, const char *value, int overwrite)
{
int errcode = 0;
if(!overwrite) {
size_t envsize = 0;
errcode = getenv_s(&envsize, NULL, 0, name);
if(errcode || envsize) return errcode;
}
return _putenv_s(name, value);
}
您可以使用_putenv()
,它将字符串参数作为字符串classSize=7
;
ostringstream classSize;
classSize << "classSize=" << howManyInClass;
_putenv(classSize.str().c_str());
或者(优选地)安全增强型_putenv_s()
,其将密钥和值作为单独的(const-char*)参数;
ostringstream classSize;
classSize << howManyInClass;
_putenv_s("classSize", classSize.str().c_str());
尝试_putenv
而不是setenv
。
msdn_putenv
您遇到链接错误的原因是,如果您查看stdlib.h库的内容,您会发现,setenv()没有在那里声明。乍一看,它是一个C标准的API,但看起来Windows并没有遵循所有的标准。或者,您可以将VS配置为使用CRT而不是Windows运行时,在这种情况下,我认为setenv将被识别。
相关文章:
- Visual Studio C++ PlaySound 标识符未定义
- 删除动态数组时未定义标识符
- 未定义的标识符/未声明
- 标识符Class_name未定义C++ oop
- 标识符"hWnd"未定义
- 为什么更改包含 psapi.h 的顺序会产生编译错误?(标识符 BOOL 未定义)
- Visual Studio 2019 概念标识符未定义
- 标识符"DDRB"未定义 - VS code / Visual Studio
- 在头文件中使用opencv类型来实现未定义的标识符
- 标识符"in"未定义
- 智能感知:标识符"node"未定义
- 标识符"__readgsqword"未定义 - Visual Studio 2017
- 标识符"V 未定义
- 标识符"thread"未定义
- 标识符uint8_t未定义 - Visual Studio 2017
- 未定义的标识符 - 缺少哪些头文件?- DX12.
- 调用函数时未定义标识符"function_name"
- Wininet未定义标识符
- 简单代码问题-未定义标识符
- 试图编写函数的未定义标识符