我使用teensy和matlab处理团队项目,并避免版本差异(例如,一个人加载版本A的青少年,现在使用它与matlab的人有代码的版本B) ,我想在配对时发送一个版本字符串。
但是,我希望版本字符串位于matlab代码和teensy之间的共享文件中,并且每次将程序加载到teensy时,都将其作为常量包含在编译中。
类似:
const string version = "<included file content>";
matlab可以在运行时读取它。
我想过使用一个文件,其内容是一个名称由teensy和matlab共享的变量的赋值,但是如果存在这样的话,我宁愿选择更优雅的解决方案,特别是那些不包含执行代码的解决方案。来自运行时的外部文件。
答案 0 :(得分:4)
一种方法就是设置一个简单的设置:
version.inc:
"1.0.0rc1";
main.cpp中:
const string version =
#include "version.inc"
...
请注意=
和#include
之间的换行符是为了让编译器满意。此外,如果您不想在.inc
文件中包含分号,则可以执行以下操作:
main.cpp中:
const string version =
#include "version.inc"
; // Put the semicolon on a newline, again to keep the compiler happy
<小时/> 编辑:您可以真正拥有所需的任何文件扩展名,而不是
.inc
文件。这一切都取决于
<小时/> 编辑:如果你真的想,你可以省略
.inc
文件中的引号,但这会导致像这样的混乱代码:
version.inc:
STRINGIFY(
1.0.0rc1
);
main.cpp中:
#define STRINGIFY(X) #X
const string version =
#include "version.inc"
...
<小时/> 编辑:
正如@Ôrel所指出的那样,你可以在Makefile中处理version.h
或类似代码的生成。假设您正在运行* nix系统,您可以尝试这样的设置:
生成文件:
...
# "1.0.0rc1"; > version.h
echo \"`cat version.inc`\"\; > version.h
...
version.inc:
1.0.0rc1
main.cpp中:
const string version =
#include "version.h"