- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Visual Studio 2015 学习 C。如果我创建一个全新的项目并且只执行以下代码:
#include <stdio.h>
int main()
{
#if abc == xyz
printf("Expression is true.");
#else
printf("Expression is false.");
#endif
}
应用程序打印出字符串Expression is true
,这是我没有预料到的。我不希望它像这样工作的原因是因为我预计会出现编译错误,因为代码中的任何地方都没有定义或声明 abc
和 xyz
标记。 所以问题是为什么这有效?
最后,如果我声明并定义 abc
和 xyz
如下:
int abc = 123;
int xyz = 456;
应用程序打印出字符串Expression is true
?这看起来显然是错误的不是吗? 为什么如果我将变量声明并定义为具有不同值的整数,我会触发 #if 而不是 #else?
谢谢。
最佳答案
我的建议是,至少在使用 C 的最初几天(几周/几个月/几年?),不要使用预处理器 #
命令,除了
#include
库 header ,以及#define
标志。尝试用预处理器做任何其他事情是不值得的努力和困惑。
在本例中,使用常规 if 语句:
if ( abc == xyz ) {
printf("Expression is true.");
}
else {
printf("Expression is false.");
}
关于对 #if 表达式感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35399161/
我正在尝试学习Rust。我正在阅读一本书online,该书实现了unix程序cat。现在,我试图读取作为像cargo run file1.txt file2.txt这样的参数传递的文件的内容,但是程序
我在 GHC 8.0.1 中遇到了一个带有种类索引 (?) GADT 的奇怪情况,其中在类型与种类签名中引入 foralls 会产生不同的类型检查行为。 考虑以下数据类型: {-# LANGUAGE
我正在使用 Perl 5.10 开发应用程序,HTML::Mason和 Apache 2.2。这是我第一次在大型项目中使用 Perl 5.10。我每隔一段时间就会出现奇怪的行为。应用程序因一个非常奇怪
我正在尝试将文件上传到aws中的rust中,因为我使用的是 rusoto_s3 的s3 rust客户端,当这些部分从单个线程发送时,我设法使分段上传代码正常工作不是我想要的,我想上传大文件,并且希望能
我是一名优秀的程序员,十分优秀!