从终端中的C程序调用函数

狮子座

这绝对让我发疯,因为这是一件很简单的事情,但我似乎做不到。

假设我有一个名为test.c的程序,其内容如下。

#include <stdio.h>

main() {
    int bool_or(int x, int y) {
        int result = x|y;
        //return result;
        printf("%d\n", result);
}

int bool_xor(int x, int y) {
    int result= x^y;
        //return result;
        printf("%d\n", result);
}
}

现在让我们说我想从终端对这些函数之一进行函数调用。我怎么做?我编译了程序,可以手动注释掉函数定义,并在编辑器中输入特定值并显示一些内容,但是如果我只想像在命令行上那样简单地写bool_xor(3,5)呢?如果我运行的是Python之类的语言。

基本上,我要问的是如何进行函数调用。谢谢!

汉奴

抱歉,您必须阅读C语法。有两个主要问题:

  • main标准C中甚至在GCC扩展中,都无法在内部定义函数,但是按照您的想象,这当然是行不通的。
  • 调用函数并不是凭空发生的,必须告诉使用什么作为参数以及如何将它们重新加工成合适的形式。

我已将您的代码重新整理为工作状态(在名为的文件中bool_xor.c):

#include <stdio.h>
#include <stdlib.h>

int bool_xor(int x, int y) {
    int result= x^y;
    printf("%d\n", result);
    return 0;
}

int main(int argc, char **argv) {
    if (argc<3) {
        printf("Too few args.\n");
        exit(1);
    }

    return bool_xor( atoi(argv[1]), atoi(argv[2]) );
}

现在进行编译和一些简单的测试:

$ gcc -Wall --pedantic -o bool_xor bool_xor.c 

$ ./bool_xor 1 2
3

$ ./bool_xor 7 5
2

要创建一个单独的or函数,您将需要重新设计,main()以确定它正在调用哪个函数,或者只是拥有另一个bool_or.c文件并生成一个单独的二进制文件来完成该单个工作(就像这个文件一样)。

这是一个组合的示例,该组合在值之前compare.c使用xoror参数来确定要执行的内部函数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int bool_or(int x, int y) {
    printf("%d\n", x|y);
    return 0;
}

int bool_xor(int x, int y) {
    printf("%d\n", x^y);
    return 0;
}

int main(int argc, char **argv) {
    if (argc!=4) {
        printf("Needs 3 parameters. Expects:\n\t%s xor|or value value\n", argv[0]);
        exit(1);
    }

    /* TODO check that arguments are valid */

    if (strcmp(argv[1], "xor") == 0)
        return bool_xor( atoi(argv[2]), atoi(argv[3]) );
    return bool_or( atoi(argv[2]), atoi(argv[3]) );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++程序中调用C函数

来自分类Dev

在C ++程序中随机调用函数

来自分类Dev

从Lua的活动程序中调用C ++函数

来自分类Dev

C代码:主程序中的调用函数

来自分类Dev

在C ++中的以下程序中重复函数调用

来自分类Dev

如何在C ++程序中调用C ++函数

来自分类Dev

从字典调用程序中的函数

来自分类Dev

C ++通用函数调用程序

来自分类Dev

c程序查找调用函数

来自分类Dev

在C ++中调用函数

来自分类Dev

修改后在终端中的Python调用函数

来自分类Dev

自动多次调用终端程序

来自分类Dev

事件处理程序中的调用函数

来自分类Dev

R-程序调用列表中的函数

来自分类Dev

从网站调用Chrome扩展程序中的函数

来自分类Dev

在事件处理程序中调用函数

来自分类Dev

调用函数时C ++程序挂起

来自分类Dev

由于函数被调用而停止运行的 C 程序?

来自分类Dev

在C中调用main函数

来自分类Dev

在C ++中调用任意函数

来自分类Dev

C ++中的模糊函数调用

来自分类Dev

在C中调用main函数

来自分类Dev

在C中调用VOID函数

来自分类Dev

C中的系统函数调用

来自分类Dev

未在 C 中调用的函数

来自分类Dev

在 C 中接收函数调用

来自分类Dev

如何在C ++ / CLI DLL中从C#应用程序调用函数?

来自分类Dev

C ++-对execvp的函数调用返回无法访问C ++ Shell程序中的错误

来自分类Dev

在 iPhone 应用程序中从 C++ 调用 Objective-C 函数