Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在cpp中将输入值设置为宏? 在C++中,是否可以从用户输入一个输入值,然后将其作为一个宏声明为实时? 不,你不能这样做。宏在预处理器处理后(代码编译前)不再存在。同样在C++中,你应该限制宏的用法。现代的c++中有更好的类型安全方法,具体取决于您的用例。_C++_Input_Macros_Global - Fatal编程技术网

是否可以在cpp中将输入值设置为宏? 在C++中,是否可以从用户输入一个输入值,然后将其作为一个宏声明为实时? 不,你不能这样做。宏在预处理器处理后(代码编译前)不再存在。同样在C++中,你应该限制宏的用法。现代的c++中有更好的类型安全方法,具体取决于您的用例。

是否可以在cpp中将输入值设置为宏? 在C++中,是否可以从用户输入一个输入值,然后将其作为一个宏声明为实时? 不,你不能这样做。宏在预处理器处理后(代码编译前)不再存在。同样在C++中,你应该限制宏的用法。现代的c++中有更好的类型安全方法,具体取决于您的用例。,c++,input,macros,global,C++,Input,Macros,Global,否 宏被预处理到代码中,就像在使用宏定义的任何地方复制和粘贴宏定义一样。这是编译器执行的第一步。一旦你的程序得到预处理,编译和链接就会随之而来 如果你有这样的东西: #define WIDTH 1920 #define HEIGHT 1080 Window window(WIDTH, HEIGHT); ... int windowWidth = WIDTH; int windowHeight = HEIGHT; 它将使过程进入这一阶段: Window window(1920, 1080);

宏被预处理到代码中,就像在使用宏定义的任何地方复制和粘贴宏定义一样。这是编译器执行的第一步。一旦你的程序得到预处理,编译和链接就会随之而来

如果你有这样的东西:

#define WIDTH 1920
#define HEIGHT 1080

Window window(WIDTH, HEIGHT);
...
int windowWidth = WIDTH;
int windowHeight = HEIGHT;
它将使过程进入这一阶段:

Window window(1920, 1080);
...
int windowWidth = 1920;
int windowHeight = 1080;
...

这可能是一个有趣的实验

  • 程序员编写的代码将在运行时定义宏
  • 预处理器处理(除其他外)代码中的所有宏
  • 编译器和链接器合力将预处理(无宏)代码转换为可执行文件
  • 启动(无源代码)可执行文件(可能在另一台计算机上!)
  • 可执行文件从用户处接收宏定义
  • 可执行文件打开一个时间窗口,将宏及时发送回步骤2,此时可以处理宏
  • 在改变的历史中,新宏导致编译失败;在步骤3中未创建任何可执行文件
  • 由于没有可执行文件运行,步骤4-6永远不会发生,导致时间悖论 随着时空连续性的撕裂,C++标准委员会召开急诊科会议,确保“时间旅行”在“未定义行为”范畴内干净。

  • :)

    不,你不能那样做。在预处理器处理宏之后(在编译代码之前),宏不再存在。另外,在
    c++
    中,无论如何都应该限制宏的使用。这有什么意义?怎么回事?