int main()
{
char a[101];
cout << "str a:";
gets(a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里为什么gets(a);要执行cout<<"str a:";呢?
编译器使用:数字火星和GNN_gcc.
C# 中有没有一种方法可以在不使用循环的情况下将多维数组的每个值设置为特定值?我找到了Array.Fill但它似乎只适用于一维数组。
基本上我正在寻找的是这样的:
double[,,,] arrayToFill = new double[7,8,9,10];
Array.FillWhole(arrayToFill, 1.2345);
Run Code Online (Sandbox Code Playgroud)
当然,可以使用嵌套循环,但这看起来很烦人。也许有更好的解决方案?
我们正在开发一个中间件SDK,用C++和Java作为库/ DLL,例如,由游戏开发者,动画软件开发人员,Avatar开发人员来增强他们的产品.
我想知道的是:开发这些类型的API是否有标准的"最佳实践"?
我在考虑可用性,可读性,效率等方面.
我的Windows/C++应用程序在内存中为操作员分配~1Gb的数据new并处理这些数据.处理完数据后删除.
我注意到如果我在没有退出应用程序的情况下再次运行处理,则第二次调用运算符new来分配〜1Gb的数据失败.
我希望Windows能够提供内存.使用其他一些Win32调用等可以更好地管理吗?
我正在使用Flex构建自己的语言,但我想知道一些事情:
我正在开发一个应用程序(C#),它将从多个csproj文件中读取项目属性/引用(和引用的属性),并修改它们的值.
但是,在这些csproj文件中找不到像"copy-local"这样的Reference属性(在单击引用时在属性资源管理器中看到的属性).有没有办法可以访问它们并以编程方式修改它们的值?
我开始用C++编写一些代码,我从一个简单的任务管理器程序中得到了这个简单的类方法,我正在编写一个实验:
void Task::setText(string text)
{
if(text.length() > MIN_LENGTH)
{
this->text = text;
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,此方法将class text属性设置为传递给方法的属性,如果它的长度高于MIN_LENGHT我所显示的代码上方定义的变量.因此,如果传递给方法的字符串的条件没有评估为true,我必须做一些事情.
在我买的C++书中,没有解释错误处理,而只是assert在任何地方使用它.因为如果表达式为false,断言只是中止程序,并且这是作为输入验证,我寻找更好的方法.
这次搜索引发了我对C++的例外.它解释了如何通过创建继承的类来创建异常exception.
良好的OOP实践表明,每个班级应该独立于该计划中的其他班级.那么我应该在哪里创建我创建的这个异常类?在同一个头文件中我定义了我的Task类?或者它应该在task.cpp我定义类的每个方法的地方?
也许这是一个愚蠢的问题,但只是想要保证安全,并从一开始就遵循良好的软件架构实践.
我搜索了谷歌和整个网站,看起来我正在做的事与我读过的东西相匹配.我正在使用VS 2010 C++ Express.当我在DLL上调用dumpbin/exports时,我没有看到列出的任何函数.
这是我的DLL代码中唯一的东西.我需要在C++中使用任何特殊标题吗?
C++头文件:
extern "C"
{
__declspec(dllexport) int __cdecl AddOne(int start);
}
Run Code Online (Sandbox Code Playgroud)
C++ CPP文件:
extern int __cdecl AddOne(int start)
{
return start + 1;
}
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西吗 该函数是否必须在命名空间或静态类或任何东西?我现在只是想做基础知识.
这是运营商new的伪代码:
while (true)
{
Attempt to allocate size bytes
if (the allocation was successful)
return (a pointer to the memory);
// The allocation was unsuccessful; find out what the
// current new-handling function is
new_handler globalHandler = set_new_handler(0);
set_new_handler(globalHandler);
if (globalHandler)
(*globalHandler)();
else
throw std::bad_alloc();
}
Run Code Online (Sandbox Code Playgroud)
问题:
1)为什么第一次将0作为参数传递给set_new_handler函数?
2)它表示当分配失败时,调用new_handler函数,尝试分配momory,当且仅当不能产生更多内存时,它返回指向已分配内存的开始的指针,或者如果它不能,则抛出bad_alloc exeption或返回空指针并且else body工作,抛出bad_alloc exeption.我的问题是为什么new_handler函数有时抛出exeption,如果它可以返回空指针,否则body会这样做?
c++ ×6
c# ×2
.net ×1
antlr ×1
api ×1
arrays ×1
dllexport ×1
exception ×1
flex-lexer ×1
java ×1
loops ×1
lua ×1
memory ×1
memory-leaks ×1
middleware ×1
msbuild ×1
new-operator ×1
parsing ×1
winapi ×1
windows ×1