C++ 如何使用C++;关键字在.cpp文件中?
根据我的要求。 假设我有以下文件C++ 如何使用C++;关键字在.cpp文件中?,c++,c,visual-studio-2010,C++,C,Visual Studio 2010,根据我的要求。 假设我有以下文件 abc.h //used for C file int new; // All C++ keywords, new use as a variable char class; // All C++ keywords, class use as a variable Actual_task(); abc.c //C file main() { ...//Body of file where they have used new and class varia
abc.h //used for C file
int new; // All C++ keywords, new use as a variable
char class; // All C++ keywords, class use as a variable
Actual_task();
abc.c //C file
main()
{
...//Body of file where they have used new and class variable
new++; //for an example
class = 'C';
actual_task();//One function is getting called here
}
我有一个.cpp
文件,需要包含该文件abc.h
才能使用实际任务()
:
然后它抛出错误
,就像类
和新
不能像变量一样使用
<> >如何使用<代码> C>/Copy>头文件在
正确的解决方案是改变头文件,以便不再使用C++关键词。
如果C++关键字用于全局变量(未被C++代码使用)或函数参数名,则可能会逃脱这样的构造:
#define new new_
#define class class_
extern "C" {
#include "abc.h"
}
#undef class
#undef new
更改标题,使变量/函数没有C++中保留的单词名。
如果有人说你不能,然后告诉他们你被要求合并两种不同编程语言的源代码,从这个意义上说,这两种语言是不兼容的。这是一个已知的问题,有一个已知的解决方案。Bummer。。。你不能。这个要求是从哪里来的?@BjörnPollex:这是一个单独的任务,从一个c文件调用,但现在我必须控制它,需要从一个cpp文件调用它。注意,
extern“c”
并不意味着“将其编译为c代码”。它仍然是C++;只有生成的名称才能更改C编译器的匹配。强调C++的定义可能不是真正允许的。
#define new new_
#define class class_
extern "C" {
#include "abc.h"
}
#undef class
#undef new