带预处理器C++ "Compiler"
C++ "Compiler" with preprocessor
因此,我们有一个分配,在其中创建类似伪语言的编译器。
示例:
PROGRAM_BEGIN
... //code
VAR(name) = NUMBER(2.3)
PROGRAM_END
我们必须使用预处理器处理并将其转换为C 代码。
示例:
#define PROGRAM_BEGIN int main(){
#define PROGRAM_END return 1;}
我遇到的麻烦是我们必须支持:
VAR(name) = NUMBER(1)+NUMBER(2.5)
经过很多想法,我有了几个想法,但是到目前为止什么都没有起作用(例如,使用具有动态创建名称的变量)。我猜想,通过一些适当的数据处理,我已经制定了计划,将输入组织到课程中,并且使用操作员超负荷可以帮助您完成此工作,但我仍然看不到大局。
尝试这个(cout
仅用于调试):
#include <iostream>
using namespace std;
#define PROGRAM_BEGIN int main(){
#define PROGRAM_END return 1;}
#define VAR(x) auto x
#define NUMBER(x) x
PROGRAM_BEGIN
VAR(name) = NUMBER(1) + NUMBER(2.5);
cout << name << endl;
PROGRAM_END
通过使用auto
,您不必担心VAR
是int
或float
。
相关文章:
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- How to recover system gcc compiler on centos 6
- 如何解决g++问题"internal compiler error: Illegal instruction min() _GLIBCXX_USE_NOEXCEPT { return __FLT_MI
- 从 MSVC14 切换到 MSVC16 会导致"compiler is out of heap space (C1060)"错误
- 庞大的初始化列表,如何修复"fatal error C1060: compiler is out of heap space"
- 在析构函数中调用"delete"运算符时"compiler is out of heap space"编译器错误
- 致命错误 C1001:编译器中发生内部错误。'f:\dd\VCtools\Compiler\cxFE\SL\P1\C\P0io.c'
- 为什么Visual Studio Compiler不在我的Mersenne-Twister实现中循环展开?
- 不使用系统Protobuf库时的"Protobuf compiler version doesn't match library version 3.6.1"
- 如何修复警告"the compiler can assume that the address of 'object' will never be NULL"
- GetCommandLine():无法从批处理文件(GCC-Compiler)传递多行参数
- "Configure: Error: Could Not Find a Working Compiler, See config.log For Details"
- Visual Studio - 升级后"Unknown Compiler version"
- 如何在 Atom IDE 中使用 gpp-compiler 时更改 MinGW 编译的 exe 位置?
- Windows / Intel Compiler / Inline Assembler & GNU 语法问题
- 带预处理器C++ "Compiler"
- CMAKE CMAKE_C_COMPILER "is not a full path to an existing compiler tool"
- Qt Creator 2.6.1 + Qt 5 + C++11 + MSVC2010 compiler
- 运行build_android.sh时" C compiler works... no"错误
- 如何在配置中禁用"compiler does not halt on function prototype mismatch"错误?