小编fus*_*har的帖子

来自C++宏中的相互引用的奇怪结果

考虑以下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如何工作?

c++ c-preprocessor

14
推荐指数
2
解决办法
465
查看次数

Git还原已删除的文件并保留文件历史记录

假设我有一个文件a.txt.有一天,我删除了它,提交并推送了.

第二天,我想恢复最后一次提交,带回来a.txt.我尝试过使用git revert,但是当我这样做时git blame,所有行都显示了恢复提交哈希.最初的责备历史丢失了.

我可以恢复文件并保留文件历史记录,即好像之前没有删除过文件吗?请注意,我不得在推送提交时更改历史记录.

谢谢!

git git-revert git-blame

8
推荐指数
2
解决办法
1332
查看次数

标签 统计

c++ ×1

c-preprocessor ×1

git ×1

git-blame ×1

git-revert ×1