标签: argument-passing

以不显眼的方式为 fprintf 创建代理函数?

I'd like to create a proxy to fprintf, like so:

void raise_exception(char *filename, int line, char *format_string, ...) {
    fprintf(stderr, "Exception in `%s`:%d!\n", filename, line);
    fprintf(stderr, format_string, ...);
    exit(EXIT_FAILURE);
}
Run Code Online (Sandbox Code Playgroud)

But what do I put in the place of the second ellipsis? Is it at all possible?

I'd like to simplify it even a bit more like so:

#define RAISE(...) raise_exception(__FILE__, __LINE__, ...)
Run Code Online (Sandbox Code Playgroud)

But I don't think this would work either.

Any ideas? Thanks!

UPDATE

Straight from Wikipedia: …

c exception-handling argument-passing

2
推荐指数
1
解决办法
886
查看次数

函数参数的内存位置

我正在准备 UNIX 考试,有一道关于 C 变量的内存位置的问题。假设我们有这样的代码

char sth;
int some_function(int arg) {
   int some_int;
   // some code here
}
Run Code Online (Sandbox Code Playgroud)

所以我想它sth位于堆上、some_int堆栈上,但位于哪里arg?有人可以解释一下 C 变量是如何管理的吗?

谢谢

c memory argument-passing

2
推荐指数
1
解决办法
3500
查看次数

Python argparse以不同的方式处理参数

我想创建一个可选参数,它将是'-- '(双破折号和空格)并将其后的所有内容作为其值.问题是之后可能会出现一些其他可选参数'-- '.我不希望这些被解析为可选参数,而是作为值的值'-- '.例如:

python prog1 --foo 1 --bar 2
Run Code Online (Sandbox Code Playgroud)

这里foobar是分别是值1和值的可选参数2

python prog1 --foo 1 --bar 2 -- --foo 4 --bar 14
Run Code Online (Sandbox Code Playgroud)

在这里我希望foo并且bar之前'-- '被解析为可选参数.但是我希望'--foo 4 --bar 14'将其解析为可选参数的值'-- '.我想这样做没有重命名而来后的参数'-- ',以foo2bar2,如果可能的话.

这可能吗?这怎么可能实现?

python arguments argument-passing command-line-arguments

2
推荐指数
1
解决办法
1497
查看次数

使用数组参数创建 bash 选择菜单

我有一个名为 的函数createmenu。该函数将接受一个数组作为第一个参数。第二个参数是数组的大小。

然后我想使用该数组的元素创建一个选择菜单。这是我到目前为止所拥有的:

使用给定数组创建菜单

createmenu ()
{
  echo $1
  echo "Size of array: $2"
  select option in $1; do
    if [ $REPLY -eq $2 ];
    then
      echo "Exiting..."
      break;
    elif [1 -le $REPLY ] && [$REPLY -le $2-1 ];
    then
      echo "You selected $option which is option $REPLY"
      break;
    else
      echo "Incorrect Input: Select a number 1-$2"
    fi
  done
}
Run Code Online (Sandbox Code Playgroud)

这是对该函数的调用示例:

createmenu ${buckets[*]} ${#buckets[@]}
Run Code Online (Sandbox Code Playgroud)

如何使用参数数组的元素作为选项来创建此选择菜单?

arrays bash argument-passing

2
推荐指数
1
解决办法
1万
查看次数

jQuery:如何在函数中使用函数参数作为函数名?

我之前遇到过这个问题几次,所以这一次我想我会从那些了解得更好的人那里得到一些建议.

我基本上想在我function( argument )的函数中使用my 作为函数名.

这是我尝试使用的一些代码:

$.fn.moveTo = function( myAction ) {

    $(this).myAction().fadeIn(400);

};
$('.currentElement').moveTo( 'next' ); // should become: $(this).next().fadeIn(400);
$('.currentElement').moveTo( 'prev' ); // should become: $(this).prev().fadeIn(400);
Run Code Online (Sandbox Code Playgroud)

关于如何让它运行的任何想法?

谢谢.

variables jquery arguments function argument-passing

1
推荐指数
1
解决办法
860
查看次数

Java:将对变量的引用作为方法的参数传递

将对象作为方法的参数传递时,发生在方法内的参数的所有更改也会影响"原始"对象.那是因为参数是对象的引用.

但我也想对变量做同样的事情 - 我希望方法内发生的所有变化都会影响"原始"变量.但我不知道怎么做.我想这样做,因为有时需要以相同的方式处理多个局部变量.

如何将对变量的引用作为方法的参数传递?

java methods arguments reference argument-passing

1
推荐指数
1
解决办法
1882
查看次数

如何编写接受未知类型和参数数量的C++函数?

我想写一个这种类型的函数:

void Print(void* args ...)
{
   while(args)
     cout<<args[i];
}
Run Code Online (Sandbox Code Playgroud)

funcdtion应该处理int和(std :: string或char*)

可能吗?

c++ argument-passing

1
推荐指数
1
解决办法
184
查看次数

void*(*例程)(void*)在C中的含义是什么?

我正在学习C,我来到这个表达式:

void *(*routine)(void *)
Run Code Online (Sandbox Code Playgroud)

我觉得很困惑.也许它是一个指针......指针......指针?

如果我想把这个东西传递给一个函数,我们将如何操纵它?我试图将这个例程构造作为一个参数传递给一个需要void(*)(void)... 的函数但是我真的很遗憾.

c syntax pointers function-pointers argument-passing

1
推荐指数
2
解决办法
4572
查看次数

将FORTRAN对象传递给C,反之亦然

我有我的Fortran对象,即

this%object%a

this%object%b

this%object%c
Run Code Online (Sandbox Code Playgroud)

我想将其传递给用C编写的代码,我主要是FORTRAN程序员,对C的接触很少。我iso_c_binding过去一直在传递整数和数组,但现在我需要传递对象。

我通过以下方式定义对象

    TYPE object

         INTEGER                                  :: a

         INTEGER                                  :: b

         INTEGER                                  :: c

    END TYPE object
Run Code Online (Sandbox Code Playgroud)

c fortran object argument-passing fortran-iso-c-binding

1
推荐指数
1
解决办法
272
查看次数

循环到可循环迭代的范围

假设我有以下情况

template<typename T>
void func(T&& arg)
{
    for (auto elem : arg) // ***
    {
        // do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

其中arg是iterabe(向量或初始化列表等).我对行***感兴趣:以下哪项更好:

auto elem
auto& elem
`const` of the above
Run Code Online (Sandbox Code Playgroud)

我认为选项(3)被参数推导所覆盖(如果需要的话,auto会将const放在那里).也是这样func称呼的事实

func(std::forward<T>(arg)); 
Run Code Online (Sandbox Code Playgroud)

什么改变?

c++ argument-passing c++11 c++14

1
推荐指数
1
解决办法
75
查看次数