我有一个用 C 编写的程序。原来的 makefile 有“gnu99”。Clang 编译它没有额外的命令行选项。但是,如果我包含一个用 c++11 编写的仅头文件库(可变参数模板 => 无法单独编译),那么地狱就会崩溃......
简单地用 'clang inputfile.c staticlib.a -lsomelib' 编译会产生如下错误:
error: unknown type name 'namespace'
error: unknown type name 'template'
... much much more ...
因此它尝试将 c++ 编译为纯 c
如果我尝试'clang++ -std=c++11 -stdlib=libc++ inputfile.c staticlib.a -lsomelib',那么:
error: expected ';' after enum
error: cannot initialize a variable of type 'rssFeedState *' with an lvalue of type 'void *'
... much much more ... !!!!! I want to make it ignore these !!!!
重写 .c 文件以编译为 c++ 是最后的选择
如何让 clang 正确处理这种情况?
即:将 .c 文件编译为 c,但将包含的头文件之一处理为 c++11(实例化可变参数模板,识别名称空间,c++11 标准库,...)