#include<stdio.h>
#define A -B
#define B -C
#define C 5
int main() {
printf("The value of A is %dn", A);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我遇到了上面的代码.我认为在预处理之后,它会被转换为
// code from stdio.h
int main() {
printf("The value of A is %dn", --5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这应该导致编译错误.但是,代码编译良好并产生输出5.
在这种情况下如何对代码进行预处理,以免导致编译器错误?
PS:我在Linux x86-64上使用gcc版本8.2.0.
我正在尝试使用 make 编译 C++ 文件。但是,默认情况下它不使用 -std=c++11 标志。每当我需要编译使用 c++11 特定功能的程序时,我必须使用 g++ 显式编译它。
所以,我想问一下如何让系统上的所有 c++ 文件自动使用选项 -std=c++11 。
如果我需要为 g++ 更改一些全局生成文件,Linux Mint 18 上生成文件的位置是什么,需要更改或添加什么?
或者我需要为自己创建一个 Makefile 吗?
编辑 1:我调用 make like
make myfileRun Code Online (Sandbox Code Playgroud)
并且目录中只有 .cpp 文件及其二进制文件。我在目录中没有任何 Makefile。
编辑 2:这里myfile是我要编译的 C++ 文件的名称。
当我使用 -d 选项运行 make 时,我得到以下输出(我无法粘贴所有输出,因为它很长并且超出了主体尺寸限制,因此,我包含了输出的屏幕截图)。
Image 1
而这个 image(2) 从末尾开始有一些线条。
图 2
我故意对文件进行了更改,"MagicalWord.cpp"以便 make 找到要制作的东西!