- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
出于某种原因,我无法正常工作:
void examplefunctionname(string str, ...){
...
va_start(ap, str.c_str());
我也没有得到这个工作:
void examplefunctionname(string str, ...){
...
int len = str.length();
char *strlol = new char[len+1];
for(int i = 0; i < len; i++){
strlol[i] = str[i];
}
strlol[len] = 0;
va_start(ap, strlol);
但这确实:
void examplefunctionname(const char *str, ...){
...
va_start(ap, str);
有人可以告诉我如何使用字符串代替 const char *
吗?
当我调用 examplefunctionname("%d %d %d", 1337, 1337, 1337) 时它输出随机数
最佳答案
来自文档:
va_start(va_list ap, last)
... The parameterlast
is the name of the last parameter before the variable argument list, i.e., the last parameter of which the calling function knows the type.
您在您的工作示例中已正确完成此操作:va_start(ap, str)
,并且 str
是最后一个已知参数。但在其他两个示例中,您将奇怪的东西传递给 va_start
。
关于c++ - 如何在 va_start 中使用字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4648597/
代码工作完美,但 gcc 和 clang 报告 va_start 上存在问题 stackoverflow 要求我再写一些东西,但我真的不知道是什么 =) int Matrix_cool_input (
在带有可变参数的函数中,我们使用函数 va_start() 初始化一个 va_list 类型的对象,'ap' 为: void va_start(va_list ap, parmN); 我不明白 1.什
根据我对 va_arg 宏的了解,它检索参数列表指向的下一个参数。有什么方法可以选择我想要获取的参数的索引,比如数组索引? 例如,我需要执行一个操作,我需要至少调用 3 次 va_arg 宏,但我希望
我正在阅读 The Linux Programming Interface 一文,他们展示了这个函数来处理错误。在手册页( man stdarg )中它说 va_start必须首先调用以初始化 ap供
据说调用 va_start() 之后必须调用 va_end() 因为 va_start()(总是?)扰乱堆栈。 任何人都可以解释一下调用 va_start() 是如何修改堆栈的,以及这种修改如何帮助获
对于下面的代码: void fun(char *msg, int n, int m, ...) { va_list ptr; va_start(ptr, m); // Questio
在开始使用 va_list 之前提前退出带有可变参数的函数是否安全? ? #include int func(const char * format, ...){ if(format ==
我要制作varargs一次释放多个指针的函数,主要是为了清理代码。所以我有: void free_all( ... ) { va_list arguments; /* Initiali
为什么下面的代码不起作用? #include #include // People are missing this in their reponses.... 'fmt' here is pas
我正在使用 Visual Studio 2012 编译此示例代码: #include #include const char * __cdecl foo(const char * format,
在对历史悠久的类进行编辑时,我被架构师的一个特殊习惯所困扰,他将 va_start -> va_end 序列包装在互斥锁中。该添加的更改日志(大约 15 年前制作,此后没有修改)指出这是因为 va_s
出于某种原因,我无法正常工作: void examplefunctionname(string str, ...){ ... va_start(ap, str.c_str()); 我也
编辑:我现在有 #include 它编译 - 但可变参数没有通过。有什么想法吗? 我有这段代码(摘录): void msg(char* message, ...) { va_list args
我想创建一些日志记录,我创建了一个类。但是我在将参数传递给它时遇到了一些问题。 类: namespace debug { class log { private:
我必须在嵌入式应用程序中使用 IAR 编译器(它没有命名空间、异常、多重/虚拟继承、模板有点限制并且仅支持 C++03)。我不能使用参数包,所以我尝试使用可变参数创建成员函数。我知道可变参数通常是不安
这是我的最小示例: #include #include #include void print_strings_and_lengths(int count, ...) { va_list
具有以下 header 的函数: int max(int n, va_list vals) 在函数内部调用: int max_first(int n, ...) 需要一个 va_start(vals,
我想使用 va_start 从省略号中检索我的参数。 这是我的代码: char str[256]; void nrf_log_flash(bool is_to_save, char * log, ..
我很难在 x64 中编译我的程序。虽然我能够修复所有问题并进行编译,但我的程序在日志记录时崩溃了: void TLog::VLogAddFormat(COLORREF colorText, const
我试图在我的项目中使用 va_start 和 va_end 函数,但 eclipse 不想将其解析为函数。 gcc 编译整个项目没有错误... [我的文件.cpp] #include #includ
我是一名优秀的程序员,十分优秀!