只有当我的代码通过 Matlab 中的 mex 命令编译时,我才希望包含某个头文件。如果它是直接用 Visual Studio 编译的,我不希望它包含在内。
有没有可以帮助解决这个问题的宏?
我想做这样的事情:
#ifdef MEX_COMPILE_FLAG
#include "mexDependent.h"
#end
MATLAB_MEX_FILE
您可以为此使用宏。为了使 mex.h 正常工作,当且仅当编译对象最终将链接到 mex 文件时,必须定义此宏。因此,该mex
命令确保在调用编译器时始终定义它。
您可以手动执行此操作:
mex -DMEX_COMPILE_FLAG ...
据我所知,mex
只是调用其他编译器而不可靠地设置预处理器宏。但是,如果您的 Matlab 构建脚本确实设置MEX_COMPILE_FLAG
了,那么您的建议将起作用,除了#end
需要设置为#endif
.