这绝对让我发疯,因为这是一件很简单的事情,但我似乎做不到。
假设我有一个名为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
使用xor
或or
参数来确定要执行的内部函数。
#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] 删除。
我来说两句