在C++中作为函数调用命令行参数的简单方法?

问题描述:

有什么办法的C++初学者可以实现这样的事情?例如:在C++中作为函数调用命令行参数的简单方法?

./timerprogram sortalgorithm.cpp 

其中timerprogram.cpp在某些时候确实像argv[1]();运行,其名称由命令行参数提供的功能?

假设sortalgorithm.cpp是独立的,并且有一个数组已经排序。我不需要计时部分,只需要如何作为函数调用一个命令行参数。 C++中是否有任何内容可以让我做到这一点?

+1

通常编译和链接C++,而不是解释。因此,在给定C++源代码时,不会有一种典型的机制允许您调用函数。但是,有平台特定的机制来调用动态链接的对象。 – jxh

+0

检查我对你的问题的解释:你希望你的程序执行另一个源文件的代码,就像编译这个其他程序然后运行它一样? – user4581301

+0

我可能没有完全想到这一点,因为我使用的IDE,我只是点击运行..我想我会希望它为其他脚本创建一个头,然后在该脚本中基本上运行一个自我标题功能。我应该编辑和更具体还是这个评论可以理解?编译后的 – Austin

否答案是否定的。

你看到的大部分内容都是在笑话中。

有一些愚蠢的做法,使它看起来像它的工作,但他们是愚蠢的,当然不适合初学者。

+0

有相当简单的方法来做到这一点。所以更好的答案是肯定或否定,这取决于“简单”的定义。例如,在我的书中,添加一个小脚本来提取函数名称(可能标记有特殊注释或宏),并生成反射数据并将其添加到构建过程中。 – hyde

+0

我认为如果你遵循OP的评论,你会发现提取函数名称不会做到这一点;他想要什么需要运行时编译或解释器,这并不容易。要做你的解决方案或解释器是一个彻头彻尾的愚蠢的事情,在这一点上,你应该使用专为反思而设计的语言,而不是滚动你自己的愚蠢的东西。 – fluffybunny

函数名主要由编译器使用,用于编译代码,并确定什么时候某个函数调用函数“where”的地方。也是由链接器,但这不重要。

尽管一些C++实现可能会提供运行时扩展或库,可以用它来解析给定其符号名称的地址,但最简单和最便携的解决方案是让程序只需要一串字符串,函数名称和指向相应函数的指针。然后,main()从数组中搜索请求的函数名称,并通过它的函数指针调用该数组。

如何实现这个简单的解决方案将成为您的家庭作业。

+0

但那不是我正在寻找的东西,因为main()会需要这个函数的名字。如果我想在每次测试一个新函数时编辑main函数,我不妨将这个新函数粘贴到与main相同的脚本中。 – Austin

+0

Awww man。你甚至不会把OP指向REDACTED或抛出一块骨头,并建议他们尝试REDACTED? – user4581301

+0

我不确定那是什么,但听起来很糟糕。请不。 – Austin