w***g 发帖数: 5958 | 1 这个问题之所以会发生,本质上是因为编译器设计的时候决定了堆栈地址是往下长的。
函数运行的时候堆栈结构是像下面这样的:
高地址
[返回地址]
[局部变量A]
[局部变量B]
[局部变量C]
....
....
[栈顶]
低地址
调用函数的时候就往栈顶压入返回地址,然后再压入局部变量,等函数结束的时候取出
返回地址,然后把栈顶调整到函数未开始时的地址。
如果局部变量B是一个数组,那么你让数组越界(buffer overflow)后就会把高地址存的
返回地址覆盖掉,然后函数返回的时候就会跳到一个随机的地方了。实际情况往往比这
个复杂的多,比如C/C++很少会把buffer分配在堆栈(stack)上,而是一般都分配在堆(
heap)上。这时候数组越界能越到堆栈上的返回地址的可能性就会减少,所以越界就得
越的相当多才行。对于古老的系统,甚至可以越界到指令内存,用恶意指令把程序本身
都覆盖了。 |
|
k*****u 发帖数: 1688 | 2 比如用dict来存储一个tree,对tree的每个子tree应用同样的函数,进行递归运算
有没有什么好的资料推荐一下,谢谢? |
|
h*********y 发帖数: 235 | 3 多谢魔法大师!
这么说来,如果我想要通过调用函数改变2个Number变量,我就要:
1 定义一个myNumber 类用来传给函数
或者 2 放在数组或者structure里面传 |
|
f********a 发帖数: 1109 | 4 【 以下文字转载自 Programming 讨论区 】
发信人: ozin (ozin), 信区: Programming
标 题: 王银看kotlin(本文建议零售价 ¥15)
发信站: BBS 未名空间站 (Thu May 25 18:06:39 2017, 美东)
Kotlin 和 Checked Exception
最近 JetBrains 的 Kotlin 语言忽然成了热门话题。国内小编们传言说,Kotlin 取代
了 Java,成为了 Android 的“钦定语言”,很多人听了之后热血沸腾。初学者们也开
始注意到 Kotlin,问出各种“傻问题”,很“功利”的问题,比如“现在学 Kotlin
是不是太早了一点?” 结果引起一些 Kotlin 老鸟们的鄙视。当然也有人来信,请求
我评价 Kotlin。
对于这种评价语言的请求,我一般都不予理睬的。作为一个专业的语言研究者,我的职
责不应该是去评价别人设计的语言。然而浏览了 Kotlin 的文档之后,我发现 Kotlin
的设计者误解了一个重要的问题——关于是否需要 checked exception。对于这个话题
我已经思考... 阅读全帖 |
|
o**n 发帖数: 2130 | 5 Kotlin 和 Checked Exception
最近 JetBrains 的 Kotlin 语言忽然成了热门话题。国内小编们传言说,Kotlin 取代
了 Java,成为了 Android 的“钦定语言”,很多人听了之后热血沸腾。初学者们也开
始注意到 Kotlin,问出各种“傻问题”,很“功利”的问题,比如“现在学 Kotlin
是不是太早了一点?” 结果引起一些 Kotlin 老鸟们的鄙视。当然也有人来信,请求
我评价 Kotlin。
对于这种评价语言的请求,我一般都不予理睬的。作为一个专业的语言研究者,我的职
责不应该是去评价别人设计的语言。然而浏览了 Kotlin 的文档之后,我发现 Kotlin
的设计者误解了一个重要的问题——关于是否需要 checked exception。对于这个话题
我已经思考了很久,觉得有必要分享一下我对此的看法,避免误解的传播,所以我还是
决定写一篇文章。
可以说我这篇文章针对的是 checked exception,而不是 Kotlin,因为同样的问题也
存在于 C# 和其它一些语言。
冷静一下
在进入主题之前,我想先纠正一些人的误解,让他... 阅读全帖 |
|
w******t 发帖数: 241 | 6 【 以下文字转载自 CS 讨论区 】
发信人: webcraft (此处不留爷,自有留爷处;处处不留爷,爷, 信区: CS
标 题: 请教一个程序调用的内存问题
发信站: BBS 未名空间站 (Sat Sep 8 11:10:10 2007)
我现在在做一个嵌入式系统的程序,其中一个中断会调用一function A,然后function
A又会调用function B,function B 调用C, 一直这样有6个嵌套的调用,我想请问一
下这样函数是不是会不停地在stack上面开销内存(包括函数本身以及函数内申明的局
部变量),这些内存会一直被占用到函数调用结束。像这样地情况,有没有更好的程序
架构能够避免这样的问题。
另外还有一个问题想请教,如果我在某个子函数中申明了指针,并且用malloc开了内存
空间,函数完结的时候free了空间,想请问一下函数调用结束返回之后,这个指针是不
是被自动设置为NULL(我想是这样,因为这个指针是局部变量)?谢谢大家 |
|
w******t 发帖数: 241 | 7 【 以下文字转载自 CS 讨论区 】
发信人: webcraft (此处不留爷,自有留爷处;处处不留爷,爷, 信区: CS
标 题: 请教一个程序调用的内存问题
发信站: BBS 未名空间站 (Sat Sep 8 11:10:10 2007)
我现在在做一个嵌入式系统的程序,其中一个中断会调用一function A,然后function
A又会调用function B,function B 调用C, 一直这样有6个嵌套的调用,我想请问一
下这样函数是不是会不停地在stack上面开销内存(包括函数本身以及函数内申明的局
部变量),这些内存会一直被占用到函数调用结束。像这样地情况,有没有更好的程序
架构能够避免这样的问题。
另外还有一个问题想请教,如果我在某个子函数中申明了指针,并且用malloc开了内存
空间,函数完结的时候free了空间,想请问一下函数调用结束返回之后,这个指针是不
是被自动设置为NULL(我想是这样,因为这个指针是局部变量)?谢谢大家 |
|
T******7 发帖数: 1419 | 8 本片最主要的设定是什么呢?梦中梦对不对?这在程序的角度来说再直观不过了,那就
是——递归,如果做梦是一个函数Dream,那么梦中梦就是该函数的递归调用。
比起一般的递归调用来,该程序的特殊之处是,它是一个多线程的递归调用,也即是说
每一次递归都会新建一个线程来执行函数体。因此该递归函数有两种结束机制,一种是
wait超时(药物失效),另一种是由其调用函数来结束(kick)。
而由于硬件平台所限,该递归只能进行四层,因为每次递归都需要消耗系统资源,所以
递归深一层,系统运行就越慢(梦境每深一层,时间就变慢20倍)。一旦在第四层的时
候资源耗尽(做梦者生命耗尽),就会产生栈溢出,因此线程就会进入僵死状态(
limbo状态)。
而一旦将运行超时时间设置得过长(强力镇静药物),则会导致子线程运行过长从而耗
尽资源。此时如果子线程还没有被上层调用函数强制结束(撞击),则会被detach(在
梦中死去),因此进入僵死状态(进入limbo状态)。
而为什么多层次的梦唤醒需要同步撞击呢,这就跟我们析构一个含有指针的STL容器一
样,如果不遵守顺序,那么就会出现容器被析构而指针内容还在从而发生内存泄露的... 阅读全帖 |
|
s****r 发帖数: 31686 | 9 【 以下文字转载自 Computation 讨论区 】
发信人: halfy (蜕), 信区: Computation
标 题: C++,一个函数完成后出segmentaion fault
发信站: BBS 未名空间站 (Wed Nov 5 20:45:09 2008), 站内
发信人: halfy (蜕), 信区: Programming
标 题: C++,一个函数完成后出segmentaion fault
发信站: BBS 未名空间站 (Wed Nov 5 20:44:45 2008), 转信
调用某函数A,其中用系统命令调用其它程序作了计算
A末尾的确认信息可以输出,没问题
但是调用A之后的语句没运行之前出现segmentation fault
我尝试过在函数A中不调用其它程序做计算,把计算结果先准备好,调用命令
虚设了一个列目录的命令
这时候调用A之后一切正常,开始读A的结果 ...
或者,在函数A中调用另外一个其他程序作计算,也没有这个问题
邪了门了 ... |
|
X*4 发帖数: 101 | 10 关于boost shared_ptr的,
#include
#include
#include
class A{
public:
virtual void sing() = 0;
protected:
virtual ~A(){
std::cout << "dtor of base" << std::endl;
}
};
class B: public A{
public:
virtual void sing()
{
std::cout << "DO re mi fa so la" << std::endl;
}
~B(){
std::cout << "Dtor of Derived " << std::endl;
}
};
boost::shared_ptr create(){
boost::shared_ptr p(new B());
... 阅读全帖 |
|
h***y 发帖数: 2194 | 11 【 以下文字转载自 Programming 讨论区 】
发信人: halfy (蜕), 信区: Programming
标 题: C++,一个函数完成后出segmentaion fault
发信站: BBS 未名空间站 (Wed Nov 5 20:44:45 2008), 转信
调用某函数A,其中用系统命令调用其它程序作了计算
A末尾的确认信息可以输出,没问题
但是调用A之后的语句没运行之前出现segmentation fault
我尝试过在函数A中不调用其它程序做计算,把计算结果先准备好,调用命令
虚设了一个列目录的命令
这时候调用A之后一切正常,开始读A的结果 ...
或者,在函数A中调用另外一个其他程序作计算,也没有这个问题
邪了门了 ... |
|
b***y 发帖数: 2799 | 12 ☆─────────────────────────────────────☆
halfy (蜕) 于 (Wed Nov 5 20:44:45 2008) 提到:
调用某函数A,其中用系统命令调用其它程序作了计算
A末尾的确认信息可以输出,没问题
但是调用A之后的语句没运行之前出现segmentation fault
我尝试过在函数A中不调用其它程序做计算,把计算结果先准备好,调用命令
虚设了一个列目录的命令
这时候调用A之后一切正常,开始读A的结果 ...
或者,在函数A中调用另外一个其他程序作计算,也没有这个问题
邪了门了 ...
☆─────────────────────────────────────☆
seventies (seventies) 于 (Wed Nov 5 21:07:18 2008) 提到:
觉得应该是数组下标越界操作吧。
☆─────────────────────────────────────☆
halfy ( |
|
n********r 发帖数: 65 | 13 比如一个类A,有私有函数 f(),
两个public的函数 a(), b(),
a() 调用 类A中的私有函数f();
b() 调用 外部的一个函数也叫 f();
两个函数在参数类型上没有差别,
该如何做,我发现在类A内的函数调用 f()
时总是调用的类内的那个 f(); |
|
s*********9 发帖数: 241 | 14 我也是刚刚查到的,汗!以前都没有听说过~
1、任务可以调用任务,也可以调用函数;而函数只能调用函数,不能调用任务。
3、函数自少要有一个输入变量,而任务可以没有输入变量,也可以有一个或者多个输
入变量。
4、函数需要返回一个值,而任务则不返回值
2、函数的仿真函数只能与主模块共用一个仿真时间单位;而任务可以定义自己的仿真
时间单位。 |
|
R****i 发帖数: 104 | 15 由于C++ name mangling (常考的一个C++的概念, 就是为什么编程语言支持ove
rride的原因之一) 的缘故, 两个函数在符号表(?)的表示并不一样.
一个是带有引用标识的, 另外一个是没有.
所以可以override, 编译没有问题.
问题在调用上面.当函数被调用的时候, 通过函数的参数类型来link符号表中的函
数. 这里就是问题的所在了. 调用函数的过程中可能出现ambiguity,也可能不出现.
这里就要用到 C++ reference的概念了.
C++ 的reference一定要refer到内存地址空间的一个东西(变量, 实例啊什么的). 不能
refer到一个没有地址空间的东西. 所以编译器会根据这个来选者调用的真正的函数,
或者报错.
比如 Fun(5, 5) 调用编译能通过, 而
int i = 5;
Fun(i, i); 编译就不会通过了.
.
right. |
|
y**b 发帖数: 10166 | 16 有好几个函数都是这样,而main()的作用只是调用这几个函数之一。这样每次main()
调用不同函数(重新编译),都得改动头文件来决定需要定义哪个宏,比较麻烦。
(之所以出现这种情况,是因为这几个函数要分别利用某个段代码的不同部分,用宏
来区分的)。
也就是说:
if 某个函数被调用
then 定义某宏
这个在c++里面如何实现?有没有更简洁的办法? |
|
D***n 发帖数: 6804 | 17 Delegate技术上说白了就是一种特殊调用函数的方法,和Hook很像。比如普通函数F()
里面运行流程是这样的:
A(); B(); C();
这个很死板,函数ABC预先要写好,编译/链接的时候必须能分别找到B的符号和实现。C
++的扩充思路是继承或者虚方法一类的,这个也必须在运行前就定死。
Delegate的思路是,不直接调用 B(),而是把B改成一个函数指针,平时指向一个特殊
值(比如self/NULL)。
(* B) (void ) = NULL;
上面程序变成
A();
if ( NULL != B) { //这个if可以控制B是must or optional
(*)B(x, y, z);
C();
这样在运行时B可以被动态赋予一个任意的函数指针。只要这个函数满足B希望的参数/
返回类型就可以了(比如参数必须是XYZ)。
在ObjC里,如果一个类型里有很多类似B这样的函数指针,就可以单独列出来形成一个
protocol,任何其他对象函数实现了这个protocol列出来的各种函数interface,再把
自己的地址赋予给B
B = & delegete;
当然在运行时,... 阅读全帖 |
|
W***i 发帖数: 9134 | 18 ZZ一个
程序员强悍解析<盗梦空间>
上周末,终于在各种剧透和解构的隆隆声中看完了期待已久的《Inception》,不得不
说,不白花这些钱。
之前在豆瓣上看到一篇讲Inception里面的数学原理的帖子,其实哪有那么深奥。
依我看,Christopher Nolan简直就是个程序员的脑子,还到不了理论数学家的高度。
为什么说是程序员呢,让我把《Inception》用程序员的语言由浅入深地解释一下。
本片最主要的设定是什么呢?梦中梦对不对?这在程序的角度来说再直观不过了,那就
是——递归,如果做梦是一个函数Dream,那么梦中梦就是该函数的递归调用。
比起一般的递归调用来,该程序的特殊之处是,它是一个多线程的递归调用,也即是说
每一次递归都会新建一个线程来执行函数体。因此该递归函数有两种结束机制,一种是
wait超时(药物失效),另一种是由其调用函数来结束(kick)。
而由于硬件平台所限,该递归只能进行四层,因为每次递归都需要消耗系统资源,所以
递归深一层,系统运行就越慢(梦境每深一层,时间就变慢20倍)。一旦在第四层的时
候资源耗尽(做梦者生命耗尽),就会产生栈溢出,因此线程就会进 |
|
h********m 发帖数: 116 | 19 比如说:我jdbc连到数据库,然后我自己有个Scala写的字符串变换函数,对某表某列
的字符串进行特定操作。我怎样调用这个函数,应用到这一列呢?貌似Stored
Procdcure只能调用内部函数?
补充:是对Oracle数据库进行操作。有人建议用Groovy写一些function。我搜了半天,
还是没找到怎么调用。谁能给点建议?
举个简单例子,我有个groovy或者Scala的function f(x), return 2*x
那我想jdbc连到oracle的某个表,然后调用f(x), 把这个表某列的值全部变成2x |
|
h********m 发帖数: 116 | 20 比如说:我jdbc连到数据库,然后我自己有个Scala写的字符串变换函数,对某表某列
的字符串进行特定操作。我怎样调用这个函数,应用到这一列呢?貌似Stored
Procdcure只能调用内部函数?
补充:是对Oracle数据库进行操作。有人建议用Groovy写一些function。我搜了半天,
还是没找到怎么调用。谁能给点建议?
举个简单例子,我有个groovy或者Scala的function f(x), return 2*x
那我想jdbc连到oracle的某个表,然后调用f(x), 把这个表某列的值全部变成2x |
|
N******K 发帖数: 10202 | 21 调试程序A
A1是A里面的一个函数
A1可以是独立函数或者类的成员函数
在一个函数A1的某处断点停下之后,临时写一段程序B B调用另外一个程序C
程序B 可以调用函数A1内部的所有变量 如果A1是类的成员函数就可以调用this
然后运行程序B 程序B可以画个图 显示一个表 什么的
程序C提供画图显示表格的各种基本函数 |
|
h********m 发帖数: 116 | 22 比如说:我jdbc连到数据库,然后我自己有个Scala写的字符串变换函数,对某表某列
的字符串进行特定操作。我怎样调用这个函数,应用到这一列呢?貌似Stored
Procdcure只能调用内部函数?
补充:是对Oracle数据库进行操作。有人建议用Groovy写一些function。我搜了半天,
还是每找到怎么调用。谁能给点建议? |
|
f**k 发帖数: 906 | 23 背景:项目里面用到一个外部函数,函数只接收一个文件名,调用后将长时间写大量数
据。
任务: 需要在函数写数据的同时,就接近即时读数据。
调用函数的时候,如果文件已经存在,就fail。所以不能事先建立个同文件名的Pipe。
也曾经使用过pipe,然后dup2 那个file descriptor。问题是在调用函数以后,取不到
函数内部的file descriptor。
100伪币答谢。 |
|
f**k 发帖数: 906 | 24 【 以下文字转载自 Linux 讨论区 】
发信人: fork (笑叹词穷,古痴今狂 终成空), 信区: Linux
标 题: 100伪币答谢Linux/Unix编程问题
发信站: BBS 未名空间站 (Sat Mar 5 18:40:00 2011, 美东)
背景:项目里面用到一个外部函数,函数只接收一个文件名,调用后将长时间写大量数
据。
任务: 需要在函数写数据的同时,就接近即时读数据。
调用函数的时候,如果文件已经存在,就fail。所以不能事先建立个同文件名的Pipe。
也曾经使用过pipe,然后dup2 那个file descriptor。问题是在调用函数以后,取不到
函数内部的file descriptor。
100伪币答谢。 |
|
b*****d 发帖数: 7166 | 25 在VC里有一个project,里面是很多c++程序,包括.h和.cpp文件。 里面定义了一些函
数。
现在要在Python里调用这些函数。
有什么办法可以比较简单的(不用自己写很多wrapper)调用这些现成的函数?
最好是在windows里做。因为我们在Windows上工作。试过boost.python,但是
没能成功安装。boost.python上的Manuel太旧了,已经驴唇不对马嘴。
我在linux上试了一下ctypes。自己写了几个简单的c++程序。发现用python调用还可以
。但是用Ipython notebook时有些问题。比如一个void函数,里面有个cout<
number<
显示不出double,而是个很大的整数!但是在python里就没有这个问题。怎么修改?
实在不行就copy到linux上工作,但是不想做太多修改。
有什么好的建议? |
|
h****g 发帖数: 772 | 26 【 以下文字转载自 Programming 讨论区 】
发信人: huangg (水银泻地), 信区: Programming
标 题: slider多长时间调用一次callback?在哪里设置呢?
发信站: BBS 未名空间站 (Thu May 26 01:11:15 2011, 美东)
slider多长时间调用一次callback?在哪里设置呢?
通常滑块控件当值变化时调用callback,
但是当用鼠标改变值的时候,会连续调用多次callback
想知道哪里设置隔多久调用一次呢?似乎有的控件需要回车才调用callback函数的
我知道这个问题和用的库有关,但是我们组现在用的是fltk,不知有多少人在用
如果不是那么普遍的话,希望知道通常的概念,也许我能去看源程序
我也知道可以在callback函数中等到一定时间再动作,但还是想知道究竟多久调用一次 |
|
h****g 发帖数: 772 | 27 slider多长时间调用一次callback?在哪里设置呢?
通常滑块控件当值变化时调用callback,
但是当用鼠标改变值的时候,会连续调用多次callback
想知道哪里设置隔多久调用一次呢?似乎有的控件需要回车才调用callback函数的
我知道这个问题和用的库有关,但是我们组现在用的是fltk,不知有多少人在用
如果不是那么普遍的话,希望知道通常的概念,也许我能去看源程序
我也知道可以在callback函数中等到一定时间再动作,但还是想知道究竟多久调用一次 |
|
l********a 发帖数: 1154 | 28 函数指针一直没有搞太懂,先描述下需求:
我想用遗传算法解一个问题,现在大体部分完成了,算法也能跑,计算得出结果也正确.整
个算法是编译为dll供其他程序调用
目前设置的算法有个objectiveFun(string funName)函数,根据输入字符串来决定调用
哪个目标函数,(因为边写边测试,用的最简单的函数f(x)=x_1+x_2,测试,但是真正计算
的时候,目标函数很复杂的),
double objectiveFun(string funName)
{
if (0==funName.compare("test"))
{ return testFun(x); }
else if (0==funName.compare("run"))
{ return run(x); }
}
现在我想把这个GA算法做成一个通用的,所以准备将objectiveFun改写,如果可以接受一
个函数指针,这样编程的时候就不用写死了,运行时没法修改.想弄成动态改变的,不知道
可不可行?因为我没有深入看过函数指针,不知道这个路走不走的通?多谢. |
|
m*********a 发帖数: 3299 | 29 void Foo(X&& x);
x可以是temporary object, unnamed variable就是不用命名的variable就可以调用这个
void Foo(X& x);
x是named object,x就是bound到调用函数的 object,没有copy,改x就是改调用函数的
object
void Foo(const X& x);
x是named object,x就是bound到调用函数的 object,没有copy,但是限制了改x的权利,
无法改 |
|
y**b 发帖数: 10166 | 30 其它函数只会被这个成员函数调用,所以设置成嵌套函数比较合理,
但C++并不支持嵌套函数吧?有没有比较好的方式呢,不想把这个
其它函数设置成同成员函数一个级别。 |
|
r******l 发帖数: 10760 | 31 我想重写一个library提高它的效率。使用这个library的用户可以重载其中的一个函数
(但是大部分用户应该不会去重载它)。原始实现中,无论用户是否重载该函数,主程
序中都直接去调用它。如果它没被重载过,就直接返回了(因为父类中该函数什么都没
做)。而我的改动中,如果用户重载了该函数,则需要在调用该函数之前先多做一些准
备工作。因为这些准备工作可能很耗时,所以我希望能够判断该函数是否被重载过,不
知道有没有什么方法可以做到? |
|
p*****c 发帖数: 20 | 32 我在头文件里声明了函数
bool cal_sum(int num,int &elem)
然后我另外写了一个文件是这个函数的主体 cal.cpp
在主函数文件里我include head.h 后,为什么还是link不到cal这个文件?
如果我在主函数里直接用 include cal.cpp,甚至都不需要头文件了。
请问如果用头文件的方式应该怎样调用那个外部函数 ? 直接include cal.cpp是合理
的做法吗? |
|
s**********4 发帖数: 3 | 33 会写c++,只是拿leetcode一个例子来问一下java的函数调用问题:
比如说我现在创建了两个文件:Solution.java和SolutionTest.java:
Solution.java:
public class Solution {
public int maxProfit(int[] prices) {
// Start typing your Java solution below
// DO NOT write main() function
if (prices.length < 2)
return 0;
int maxDiff = 0;
int minValue = prices[0];
for (int i = 1; i < prices.length; ++i) {
if (prices[i] < minValue)
minValue = prices[i];
... 阅读全帖 |
|
y**b 发帖数: 10166 | 34 那就是说还是要清楚调用某个函数的时候需要定义哪个宏,
我想弄的傻瓜化一点,user只需知道调用某个函数就行了。
也许我原来的设计就不好,不然不会出现这种情况。 |
|
N******K 发帖数: 10202 | 35 编译器 vs2013 release模式
Tempfunction 计算一个数然后输出 N 控制计算复杂度
我用function pointer :TempfunctionPtr = &Tempfunction
然后比较 直接调用函数Tempfunction 和 通过指针间接调用函数
结果很诡异
N=1000 , Tempfunction_time=1, TempfunctionPtr_time=2;
N=2000 , Tempfunction_time=2, TempfunctionPtr_time=6;
N=4000 , Tempfunction_time=4, TempfunctionPtr_time=11;
N=8000 , Tempfunction_time=8, TempfunctionPtr_time=21;
TempfunctionPtr_time - Tempfunction_time 应该是常数
N并不改变 函数调用的次数
=================
#include
#include
void Tempfunctio... 阅读全帖 |
|
c*********e 发帖数: 16335 | 36 node.js里调用了callback之后,还会回到函数里。比如
function test(item,cb){
if (item == 1) {
cb(1);
}
if (item == 1) {
cb(2);
}
}
test(1,cb);就会2次调用cb函数。
是这样的吗? |
|
b********e 发帖数: 109 | 37 做论文需要用到复数阶和复数变量的Bessel函数,matlab中没有,Maple中有,
请问可以在Matlab中调用Maple的函数吗?需要安装Maple软件吗?如何调用呢?
不胜感激! |
|
s****a 发帖数: 6521 | 38 【 以下文字转载自 Linux 讨论区 】
发信人: shorea (未注册用户), 信区: Linux
标 题: 问个shell编程小问题
发信站: BBS 未名空间站 (Thu Nov 24 11:57:24 2011, 美东)
请问,可不可以把 “-”这种类型的参数传递到函数里?
具体点说,我在一个文件里定义了一些函数,里面有用"getopts"接收参数的行。假设
这个函数叫func()
然后我在另一个脚本里用source调用这个文件;
然后下面的语句想要这样调用函数
func -i -o ....等等
发现不行。
而如果在终端下,source了文件之后,直接命令行输入 func -i -o ...等等,却可以
实现。
也就是说,函数里的getopts语句可以获取命令行里的参数,却不能用“脚本里的语句
”这样的方式来执行。
有什么办法么? |
|
s****a 发帖数: 6521 | 39 请问,可不可以把 “-”这种类型的参数传递到函数里?
具体点说,我在一个文件里定义了一些函数,里面有用"getopts"接收参数的行。假设
这个函数叫func()
然后我在另一个脚本里用source调用这个文件;
然后下面的语句想要这样调用函数
func -i -o ....等等
发现不行。
而如果在终端下,source了文件之后,直接命令行输入 func -i -o ...等等,却可以
实现。
也就是说,函数里的getopts语句可以获取命令行里的参数,却不能用“脚本里的语句
”这样的方式来执行。
有什么办法么? |
|
I*****y 发帖数: 602 | 40 可以让C/C++的推出函数调用你的ExitProgram()函数,我记不清出啦。
有一个内部函数可以注册你自己的退出函数。 |
|
x****e 发帖数: 3 | 41 【 以下文字转载自 EE 讨论区,原文如下 】
发信人: XinZhe (战士), 信区: EE
标 题: [求助]如何加快S函数在Simulink中的运行速度
发信站: Unknown Space - 未名空间 (Tue Jan 25 16:50:07 2005) WWW-POST
我正在Simlink中调试运行一个S函数,基本上就是调用已有的很大的一个多线程仿真程序
ASM(标准C写的,MSVC 6.0编译环境)。如果假设ASM作为可执行文件(e.g.
ASM.exe)在PC(P4 2.8GHz/Windows2000, Matlab 6.5 & 7.0)上运行,所需要的时间为1秒
的话,那么编译成S-函数(e.g. ASM.dll)在Simulink中调用的话,就需要运行20秒的时间
。
我已经尽可能的对程序进行优化了(如使用Release Build instead of Debug Build,并
尽可能地参考Simulink手册上对於Simulink仿真优化设置的说明),但几乎一点效果都没
有。下面是我的S函数的源程序,请各位给支支招:怎么样才能加快在Simulink中的 |
|
M********5 发帖数: 715 | 42 我对于c++一些很高级的特性都能理解,唯独对reference始终理解不了
首先总结一些,reference有如下的特性:
1.reference不能为NULL
2.reference是从一而终的,绝对不会变换所指的对象
下面写一段代码,然后问个问题
class A{
}
(类的定义省去了)
A a; //这里肯定会调用缺省的ctor
A& ra = a;
所以我的问题是,定义ra的时候,会调用A的copy contructor吗?
由此引申出了另外一个问题
在函数的参数为引用类型的时候(不是const引用类型),如果调用函数的时候,传递
的参数是一个对
象,那么这个时候会调用copy constructor吗 |
|
w******7 发帖数: 36 | 43 各位大虾:
一个模拟软件,有现成的dll,可以用一些函数去操作这个模拟软件(比如修改输入参数等等)。
请问如果我用调用别人写好的这个dll, 应该怎么写呢?
其实就是说,我想用通过java直接调用这个dll,间接调用dll中的函数。
谢谢!! |
|
w******7 发帖数: 36 | 44 各位大虾:
一个模拟软件,有现成的dll,可以用一些函数去操作这个模拟软件(比如修改输
入参数等等)。
请问如果我用调用别人写好的这个dll, 应该怎么写呢?
其实就是说,我想用通过java直接调用这个dll,间接调用dll中的函数。
谢谢!! |
|
w******7 发帖数: 36 | 45 各位大虾:
一个模拟软件,有现成的dll,可以用一些函数去操作这个模拟软件(比如修改输入参数等等)。
请问如果我用调用别人写好的这个dll, 应该怎么写呢?
其实就是说,我想用通过java直接调用这个dll,间接调用dll中的函数。
谢谢!!
|
|
S**b 发帖数: 1883 | 46 英语,既无逻辑,也无文采。
先说逻辑:
你听到窗外树上有鸟叫。你可以用汉语作这样一个表达:“树上有鸟。”这在汉语,是
一个明确,完整的表达。英语只有用“There's a bird on the tree. 或者“There
are birds on the tree”
都必须先把树上究竟是只有一只鸟还是有一只以上的鸟弄清楚。如果这个信息对你很
重要的话,那么,不妨先去把鸟数一下然后再说话,也就罢了。可是,在绝大多数场合
,我们并不关心鸟的具体数目,这类信息即使弄清楚了也没有表达出来的必要,何况还
有弄不清楚的时候。并且,如果窗外的树不止一棵,那么,就英语而言,除了有“
There are birds on the tree”外,还有“There are birds on the trees”的可能
。你想要不把话说错,不但要把鸟数清楚,还要弄清楚这些鸟是停在同一棵树上还是分
停在不同的树上。
这种词尾变化越多,语言的效率就越低。对精确性也毫无帮助。
汉化后的英语将会是这样:当我们知道树上有鸟但是数目不详或无意表达数目时,可用
“There be birds on the tree”。... 阅读全帖 |
|
S**b 发帖数: 1883 | 47 你听到窗外树上有鸟叫。你可以用汉语作这样一个表达:“树上有鸟。”这在汉语,是
一个明确,完整的表达。英语只有用“There is a bird on th
e tree”或者“There are birds on the tree”
。都必须先把树上究竟是只有一只鸟还是有一只以上的鸟弄清楚。如果这个信息对你很
重要的话,那么,不妨先去把鸟数一下然后再说话,也就罢了。可是,在绝大多数场合
,我们并不关心鸟的具体数目,这类信息即使弄清楚了也没有表达出来的必要,何况还
有弄不清楚的时候。并且,如果窗外的树不止一棵,那么,就英语而言,除了有“Th
ere are birds on the tree”外,还有“There a
re birds on the trees”的可能。你想要不把话说错,不但要
把鸟数清楚,还要弄清楚这些鸟是停在同一棵树上还是分停在不同的树上。
问题的根源正在于英语中的词尾变化。由此可见汉语语法的优越。那种词尾变化表面上
显得有助于精确表达,而实际上,这种词尾变化越多,语言的效率就越低。
汉化后的英语将会是这样:当我们知道树上有鸟但是数目不详或无意表达数目时,可用
“Th... 阅读全帖 |
|
S**b 发帖数: 1883 | 48 你听到窗外树上有鸟叫。你可以用汉语作这样一个表达:“树上有鸟。”这在汉语,是
一个明确,完整的表达。英语只有用“There is a bird on th
e tree”或者“There are birds on the tree”
。都必须先把树上究竟是只有一只鸟还是有一只以上的鸟弄清楚。如果这个信息对你很
重要的话,那么,不妨先去把鸟数一下然后再说话,也就罢了。可是,在绝大多数场合
,我们并不关心鸟的具体数目,这类信息即使弄清楚了也没有表达出来的必要,何况还
有弄不清楚的时候。并且,如果窗外的树不止一棵,那么,就英语而言,除了有“Th
ere are birds on the tree”外,还有“There a
re birds on the trees”的可能。你想要不把话说错,不但要
把鸟数清楚,还要弄清楚这些鸟是停在同一棵树上还是分停在不同的树上。
问题的根源正在于英语中的词尾变化。由此可见汉语语法的优越。那种词尾变化表面上
显得有助于精确表达,而实际上,这种词尾变化越多,语言的效率就越低。
汉化后的英语将会是这样:当我们知道树上有鸟但是数目不详或无意表达数目时,可用
“Th... 阅读全帖 |
|
S**b 发帖数: 1883 | 49 英语,既无逻辑,也无文采。
先说逻辑:
你听到窗外树上有鸟叫。你可以用汉语作这样一个表达:“树上有鸟。”这在汉语,是
一个明确,完整的表达。英语只有用“There's a bird on the tree. 或者“There
are birds on the tree”
都必须先把树上究竟是只有一只鸟还是有一只以上的鸟弄清楚。如果这个信息对你很
重要的话,那么,不妨先去把鸟数一下然后再说话,也就罢了。可是,在绝大多数场合
,我们并不关心鸟的具体数目,这类信息即使弄清楚了也没有表达出来的必要,何况还
有弄不清楚的时候。并且,如果窗外的树不止一棵,那么,就英语而言,除了有“
There are birds on the tree”外,还有“There are birds on the trees”的可能
。你想要不把话说错,不但要把鸟数清楚,还要弄清楚这些鸟是停在同一棵树上还是分
停在不同的树上。
这种词尾变化越多,语言的效率就越低。对精确性也毫无帮助。
汉化后的英语将会是这样:当我们知道树上有鸟但是数目不详或无意表达数目时,可用
“There be birds on the tree”。... 阅读全帖 |
|
S**b 发帖数: 1883 | 50 你听到窗外树上有鸟叫。你可以用汉语作这样一个表达:“树上有鸟。”这在汉语,是
一个明确,完整的表达。英语只有用“There is a bird on th
e tree”或者“There are birds on the tree”
。都必须先把树上究竟是只有一只鸟还是有一只以上的鸟弄清楚。如果这个信息对你很
重要的话,那么,不妨先去把鸟数一下然后再说话,也就罢了。可是,在绝大多数场合
,我们并不关心鸟的具体数目,这类信息即使弄清楚了也没有表达出来的必要,何况还
有弄不清楚的时候。并且,如果窗外的树不止一棵,那么,就英语而言,除了有“Th
ere are birds on the tree”外,还有“There a
re birds on the trees”的可能。你想要不把话说错,不但要
把鸟数清楚,还要弄清楚这些鸟是停在同一棵树上还是分停在不同的树上。
问题的根源正在于英语中的词尾变化。由此可见汉语语法的优越。那种词尾变化表面上
显得有助于精确表达,而实际上,这种词尾变化越多,语言的效率就越低。
汉化后的英语将会是这样:当我们知道树上有鸟但是数目不详或无意表达数目时,可用
“Th... 阅读全帖 |
|