考虑以下C++代码:
#include <bits/stdc++.h>
using namespace std;
string TRUE = "true";
string FALSE = "false";
#define TRUE FALSE
#define FALSE TRUE
int main()
{
cout << TRUE << endl;
cout << FALSE << endl;
}
Run Code Online (Sandbox Code Playgroud)
使用GCC 4.9.2编译,上面的代码输出:
true
false
Run Code Online (Sandbox Code Playgroud)
产量背后的逻辑是什么?我期望"false \ntrue \n"甚至"false \nfalse \n",但我找不到这个实际输出背后的原因.
在这种情况下,这对#defines如何工作?
假设我有一个文件a.txt.有一天,我删除了它,提交并推送了.
第二天,我想恢复最后一次提交,带回来a.txt.我尝试过使用git revert,但是当我这样做时git blame,所有行都显示了恢复提交哈希.最初的责备历史丢失了.
我可以恢复文件并保留文件历史记录,即好像之前没有删除过文件吗?请注意,我不得在推送提交时更改历史记录.
谢谢!