我在一个团队项目中使用 teensy和 matlab,并避免版本差异(例如,一个人用版本 A 加载青少年,而现在使用它和 matlab 的人有代码的版本 B),我想在配对时发送一个版本字符串。
但是,我希望版本字符串位于 matlab 代码和 teensy 之间的共享文件中,并且每次程序加载到 teensy 时,都将其作为常量包含在编译中。
有点像:
const string version = "<included file content>";
matlab 可以在运行时读取它。
我想过使用一个文件,其内容是对一个变量的赋值,该变量的名称由 teensy 和 matlab 共享,但是如果存在这样的解决方案,我更喜欢更优雅的解决方案,尤其是不包括从运行时的外部文件。
最佳答案
一种方法就是像这样进行简单的设置:
版本.inc:
"1.0.0rc1";
主要.cpp:
const string version =
#include "version.inc"
...
注意 =
和 #include
之间的换行符是为了让编译器满意。此外,如果您不想在 .inc
文件中包含分号,您可以这样做:
主要.cpp:
const string version =
#include "version.inc"
; // Put the semicolon on a newline, again to keep the compiler happy
编辑:代替
.inc
文件,您真的可以拥有您想要的任何文件扩展名。这一切都取决于口味
编辑:如果你真的想要,你可以省略
.inc
文件中的引号,但这会导致像这样的困惑代码:
版本.inc:
STRINGIFY(
1.0.0rc1
);
主要.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
...
版本.inc:
1.0.0rc1
主要.cpp:
const string version =
#include "version.h"
关于c++ - 编译时在文件中包含字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30571009/