通过模板定义 main()
Defining main() via a template
注意,我知道 this question,但我想要的不一样。
我当前的代码(我的 main.cpp
的总和)看起来像这个用于将 class 制作成可执行文件的标准样板:
#include <MyHeader.h>
int main(int argc, char **argv)
{
return MyTemplate<MyClass>(argc, argv);
}
这工作很愉快,但如果我能做到就更好了:
#include <MyMainWrapper.h>
// UPDATE: commented out... MyMainWrapper<MyTemplate, MyClass> main;
MyMainWrapper<MyTemplate, MyClass> someObjectThatGeneratesMain;
这将扩展到上面的代码。它当然可以用宏轻松完成,但我很想看看是否有模板解决方案,如果没有,为什么不呢?
更新:我想象一个函数模板可能以某种方式做:
template<...>
extern "C" int main(int argc, char **argv)
{
//...
}
但我看到模板不能 extern "C"
。
没有模板解决方案,因为main
是纯C接口
由于为模板专业化添加了所有修饰,linker 没有机会知道您的 "main".
到底应该是什么
#include <MyMainWrapper.h>
MyMainWrapper<MyTemplate, MyClass> main;
这也不是一个函数,因此它与所需的签名不匹配。它可能是可调用的,但这是 C++ 添加的语法糖,而不是 link.
注意,我知道 this question,但我想要的不一样。
我当前的代码(我的 main.cpp
的总和)看起来像这个用于将 class 制作成可执行文件的标准样板:
#include <MyHeader.h>
int main(int argc, char **argv)
{
return MyTemplate<MyClass>(argc, argv);
}
这工作很愉快,但如果我能做到就更好了:
#include <MyMainWrapper.h>
// UPDATE: commented out... MyMainWrapper<MyTemplate, MyClass> main;
MyMainWrapper<MyTemplate, MyClass> someObjectThatGeneratesMain;
这将扩展到上面的代码。它当然可以用宏轻松完成,但我很想看看是否有模板解决方案,如果没有,为什么不呢?
更新:我想象一个函数模板可能以某种方式做:
template<...>
extern "C" int main(int argc, char **argv)
{
//...
}
但我看到模板不能 extern "C"
。
没有模板解决方案,因为main
是纯C接口
由于为模板专业化添加了所有修饰,linker 没有机会知道您的 "main".
到底应该是什么#include <MyMainWrapper.h>
MyMainWrapper<MyTemplate, MyClass> main;
这也不是一个函数,因此它与所需的签名不匹配。它可能是可调用的,但这是 C++ 添加的语法糖,而不是 link.