gpt4 book ai didi

c++ - 为什么预处理器命令必须以第一个非空白开始

转载 作者:太空狗 更新时间:2023-10-29 20:03:36 26 4
gpt4 key购买 nike

我正在尝试通过 setter 行执行 #ifndef,但收到此错误

"Error 20 error C2014: preprocessor command must start as first nonwhite space"

我知道错误的意思,我只是好奇为什么会这样?它是编译器的选择吗?这背后的原因是什么?用户更容易注意到?

如果有人想知道,这里是代码:

inline void SetSomething(int value) { #ifndef XBOX ASSERT(value <= 1); #endif test = value; };

最佳答案

起初 C 没有任何标准的预处理器。然后人们开始使用预处理作为外部工具。您可能会注意到 # 与 Unix-land shell 脚本中的一般注释相同。

随着语言的发展,预处理器与编译器和语言本身的更多部分集成在一起,但它保持了完全不同的结构,即,特别是它是面向行的,而 C 和 C++ 核心语言是自由形式。

在那之后,线条变得更加模糊了。现在预处理通常添加 #line 指令或等价物供核心语言编译器使用,#pragma 指令也用于核心语言编译器,在另一个方向我们现在有 _Pragma (IIRC)。结构仍然大部分是原来的样子。 C 和 C++ 是进化的语言,而不是设计的语言。

关于c++ - 为什么预处理器命令必须以第一个非空白开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27554402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com