草庐IT

main_arg

全部标签

c++ - 在 C++ 中处理 va_args

我有一个函数A(...)和B(...)。现在我必须在A中调用B,任何将...从A传递到的方法>B?伪代码:voidA(...){//SomeoperatorsB(...);//Insteadof...IneedtopassA'sargs}附注我知道这可以使用宏来完成,但是函数呢。 最佳答案 您不能转发va_args。您只能转发va_list。voidvB(intfirst,va_listap){//dostuffwithap.}voidB(intfirst,...){va_listap;va_start(ap,first);vB(f

c++ - main() 不执行,但编译

我有这个简单的程序://Includelibraries#include#include#includeusingnamespacestd;//Includelocals//Start#defineNUMBER600851475143intmain(intargc,constchar*argv[]){longlongintans=0;longlongintnum=NUMBER;vectorfactors;do{//Getlowestfactorfor(inti=1;i1);cout::min();for(inti=0;ihighestFactor){highestFactor=fact

c++ - 在 C++ 中将 main() 声明为友元函数

我有一个类,我只希望客户为每个进程创建一个对象。除了单例,更好的方法(我相信)是告诉客户只在main()中创建它们。因此,一种自然的强制措施是将构造函数设为私有(private)并将main()作为友元。它是这样工作的:classA{friendintmain(int,char**);A(){}};intmain(int,char**){Aa;}但是当我需要将类A放入命名空间时它会中断:namepacens{classA{friendintmain(int,char**);A(){}};}intmain(int,char**){ns::Aa;}问题是作用域:编译器现在认为friendi

c++ - *v8::String::Utf8Value(args[0]->ToString()) 不返回 node.js 插件参数的字符串

我发现*v8::String::Utf8Value(args[0]->ToString())在Node0.8.232位上返回正确的字符串,但在Node0.8上不返回正确的字符串。8个64位。有人知道为什么吗?我的node.js插件看起来像这样:#defineBUILDING_NODE_EXTENSION#include#defineMAX_OUTPUT_BUF80extern"C"char*do_sqlsig(char*in);usingnamespacev8;HandleSqlsig(constArguments&args){HandleScopescope;char*c_arg,*

c++ - 函数 main 中程序开头的 stackoverflow 错误

我制作了一个程序,我想对其进行调试(或运行),但在函数main中的第一个运算符之前,它中断并显示一条消息:name.exe中0x0020f677处未处理的异常:堆栈溢出。为什么会发生这种情况以及如何解决该问题?VisualC++2010,Win32控制台应用程序。编辑1:调试器向我显示chkstk.asm中的asm代码。为了解决这个问题,分析什么很重要?头文件中添加的东西导致了这个问题? 最佳答案 如果你清除了一个固定大小的数组并且它的大小太大,你可能会遇到这个错误。intfixedarray[1000000000];尝试减少长度或

c++ - 如何为在 main() 外部和内部声明的变量分配内存

我注意到在处理一些大型数组(如1000x1000的double)时,如果我在main()内部声明数组,我的程序会耗尽内存,但如果我在main()外部声明数组,这似乎永远不会发生)即使对于更大的阵列。有人可以解释一下区别是什么吗? 最佳答案 当一个变量在一个函数中声明时(在你的例子中,main),它被分配在堆栈上,如果它太大(例如,一个大数组),你会遇到stackoverflow.在所有函数之外定义的变量是静态分配的。它的生命周期持续到程序终止。 关于c++-如何为在main()外部和内部

c++ - 已经在 main.obj 中定义

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前。这是解决我的问题的代码,我收到4个错误:student.obj:errorLNK2005:"structNode*admitedFirstNode"(?admitedFirstNode@@3PAUNode@@A)alreadydefinedinmain.objstudent.obj:errorLNK2005:"structNode*allFirstNod

c++ - C++11 可变参数模板中的 va_arg() 是什么?

这个问题在这里已经有了答案:C++indexoftypeduringvariadictemplateexpansion(4个答案)关闭8年前。我已经阅读了一些关于这个新的C++11功能的文章,但我并不理解所有的东西(我是C++的新手)。如何访问特定参数,就像在C中使用stdarg.h中的va_arg一样?templatevoidf(Args...args){for(size_ti=0;i

c++ - 如果我指定多个,则使用哪个 `main`

连同其他一些,以下是main()的有效原型(prototype):intmain(void)intmain(int,char**)在C中,我们不能重载函数,因此永远不可能同时拥有两者。但在C++中,情况并非如此。如果我要在编译的C++可执行文件中同时使用两者,那么使用哪一个?它取决于命令行吗?标准怎么说? 最佳答案 C++11§3.6.1/2:”Thisfunctionshallnotbeoverloaded. 关于c++-如果我指定多个,则使用哪个`main`,我们在StackOver

c++ - 没有 main() 的 Cpp 类中的 `undefined reference to ` main`

我遇到了this在试图得到答案时。但似乎张贴者有多个文件,但没有链接,因此出现错误。但是,为什么在使用单个文件时会出现此错误?g++myClass.cpp/usr/lib/gcc/i686-redhat-linux/4.6.3/../../../crt1.o:Infunction`_start':(.text+0x18):undefinedreferenceto`main'collect2:ldreturned1exitstatus为什么main在编译时是必需的(它从哪里找到我的代码中提到的main)?main是代码执行的起点,但为什么编译器会假设我在这里需要一个main。我可以在其他