小编Moe*_*673的帖子

关于++运算符的C和C++之间的区别

我一直在愚弄一些代码,看到一些我不理解"为什么"的东西.

int i = 6;
int j;

int *ptr = &i;
int *ptr1 = &j

j = i++;

//now j == 6 and i == 7. Straightforward.
Run Code Online (Sandbox Code Playgroud)

如果您将操作员放在等号的左侧怎么办?

++ptr = ptr1;
Run Code Online (Sandbox Code Playgroud)

相当于

(ptr = ptr + 1) = ptr1; 
Run Code Online (Sandbox Code Playgroud)

ptr++ = ptr1;
Run Code Online (Sandbox Code Playgroud)

相当于

ptr = ptr + 1 = ptr1;
Run Code Online (Sandbox Code Playgroud)

后缀运行编译错误,我得到它.你在赋值运算符的左侧有一个常量"ptr + 1".很公平.

一个编译的前缀和C++中的WORKS.是的,我理解它很乱,你正在处理未分配的内存,但它可以工作和编译.在C中,这不会编译,返回与后缀"左值作为赋值的左操作数所需的左值"相同的错误.无论如何编写,使用两个"="运算符或"++ ptr"语法扩展,都会发生这种情况.

C如何处理这样的赋值和C++如何处理它有什么区别?

c c++ increment prefix

70
推荐指数
2
解决办法
4386
查看次数

Git是否可以永久地在同一个分支上工作?

高级背景:

我的工作场所已经存在了数十年,这里的许多员工也是如此。我今年年初加入,但是在其他地方有很多经验。

早在我的第一份工作时,我就自学了Git,这实际上是一个2人项目。我搞砸了很多事情,实践了很多事情,所以我来自敲门打鼓的学校。正如我在给某些部门负责人的电子邮件中写的那样

[…]我不是git专家。无论好坏,我在这家公司都是:\ […]

我们只是从一个过时的源代码控制(锁定文件,复制文件等)切换到了Git / Bitbucket。大多数人(以及较早的人)都在适应新协议,而我和其他一些人正在尽我们所能。

我正在处理的人:

有一个家伙,一个大家伙,是curmudgeon。我和他相处得很好,但他是一个难以克服的坚果。他不想学习新事物,他希望它很简单。顺便说一句,这不是一个愚蠢的家伙,自从C ++发布以来,他一直在使用C ++进行编程,此外,他还编写了用于从产品(从头开始)连接到数据库的驱动程序。他从事的许多代码都是他自己的东西,本质上是其他部门使用的库,尽管他的大部分工作都在其他人也可以修改的共享代码文件中。

他已经接受我知道我在说什么,但他是老狗。Git基于“差异”与实际文件的概念具有他不希望学习的使用场景,例如创建新分支。他想要一个简单的程序。

为辩护,我是一位很好的老师。我曾与其他许多员工一起工作过,他们似乎现在就了解了,并且正在使用Git / Bitbucket淘汰他们的代码。

他想要什么:

回到curmudgeon,他希望一个分支继续工作。他不想签出新分支,切换分支,也不想知道分支。他希望自己完成工作,提交,提出请求并继续工作。

这只是一个人,公司中的大多数人都愿意改变。在过去的一周中,我与他共坐了大约5-6个小时。我之所以喜欢它,是因为我们彼此尊重,我也认为这是我的公司职责,因为我是在这里做到最好的装备(许多人发现他很难与他交谈,所以他有点像在自己的泡沫中工作,再加上这里没有多少人我做的Git的舒适度)。此外,他还全神贯注于Git的一些核心基础知识,例如暂存,本地与远程等。

尽管并不理想,但如果他每隔一段时间从master分支合并到自己的分支,并在可预见的将来仅在其一个分支上工作,这将是一个“足够好”的解决方法吗?希望我能逐渐使他成为一个好的“公民”。最糟糕的是,这家伙可能会在几年内退休。

这是一个定时炸弹吗?它会破坏主分支的历史吗(假设所有合并冲突都得到正确解决;这对他来说不是问题)?

git bitbucket git-merge git-branch

5
推荐指数
1
解决办法
84
查看次数

在字符串中的每个字符后添加空格

我的脚本中有一个字符串变量,由ls -l中的9个权限字符组成

例如:

rwxr-xr--

我想操纵它,使它显示如下:

r w x     r - x     r - -
Run Code Online (Sandbox Code Playgroud)

IE每隔三个字符分隔标签,其他所有字符用空格分隔.我最接近的是使用printf

printf "%c %c %c\t%c %c %c\t%c %c %c\t/\n" "$output"{1..9}
Run Code Online (Sandbox Code Playgroud)

这仅打印第一个字符,但格式正确

我敢肯定有一种方法可以使用我想不到的"sed"来做到这一点

有什么建议?

string bash scripting formatting sed

3
推荐指数
1
解决办法
1506
查看次数

MFC单击并移动/拖动对话框窗口

我目前正在努力完成一些传递给我的代码.它是在Visual Studio 2005年的MFC中编写的,被搁置了,现在被带到我身边.

虽然我知道C++,但我花了最近2个月的时间研究代码并学习MFC,它开始融合在一起.

代码的GUI是嵌入在不可见对话窗口中的SWF Flash文件.我没有SWF文件的源代码,因此将来可能会在WPF中重做它.我将WMMode设置为"Window",因为在透明/不透明模式下,它无法正常显示,每次捕获鼠标事件时它都会闪烁/闪烁.

无论如何,在Win XP/Vista中,单击并拖动闪光控件可以正常工作.在Windows 7/8.1中,它不会移动.

很高兴提供所需的任何和所有信息.我仍然对MFC对话有点不知所措,所以不确定你们都希望看到什么.

我发现了这个问题:通过在控件上单击并拖动来移动窗口

看起来它解决了很多问题.但是,我不希望整个控件像这样可点击,只有顶部.不幸的是,在MS Resource视图中,ActiveX控件是空白的,因为SWF仅在运行时加载; 我试图为这种事情找到资源,但这很难,因为我不确定要使用的技术术语.

编辑

我通过创建一个非常简单的MFC应用程序尝试了这一点,该应用程序具有静态文本控件而没有别的.我试图通过点击静态文本来使它工作(虽然我可能会把自己画成一个角落,因为它没有内置的lButtonDown事件).

这是相关代码:

class MyDialog : public CDialog
{
public:
    MyDialog(CWnd* pParent = NULL) : CDialog(MyDialog::IDD, pParent)
    {    }
    // Dialog Data, name of dialog form
    enum{ IDD = INTERFACE1 };
protected:
    virtual void DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); }
    //Called right after constructor. Initialize things here.
    virtual BOOL OnInitDialog()
    {
        CDialog::OnInitDialog();
        pText = (CStatic *)GetDlgItem(ID_TEXT);

        pText->SetWindowTextW(_T("Hello World!"));

        return true;
    }

    afx_msg void OnLButtonDown(UINT nFlags, CPoint …
Run Code Online (Sandbox Code Playgroud)

c++ flash mfc dialog

2
推荐指数
1
解决办法
5016
查看次数

初学者在 MFC C++ 中,为什么设备上下文需要创建一个旧的 Font/Bitmap/etc 指针,然后在最后选择对象()?

案例:

void CMainWindow::OnPaint ()
{
    CRect rect;
    GetClientRect (&rect);

    CPaintDC dc (this);
    dc.SetViewportOrg (rect.Width () / 2, rect.Height () / 2);
    dc.SetBkMode (TRANSPARENT);

    for (int i=0; i<3600; i+=150) {
        LOGFONT lf;
        ::ZeroMemory (&lf, sizeof (lf));
        lf.lfHeight = 160;
        lf.lfWeight = FW_BOLD;
        lf.lfEscapement = i;
        lf.lfOrientation = i;
        ::lstrcpy (lf.lfFaceName, _T ("Arial"));

        CFont font;
        font.CreatePointFontIndirect (&lf);

        CFont* pOldFont = dc.SelectObject (&font);
        dc.TextOut (0, 0, CString (_T ("          Hello, MFC")));

        //WHY THIS LINE?
        dc.SelectObject (pOldFont);
    }
}
Run Code Online (Sandbox Code Playgroud)

代码在围绕原点(移动到窗口中心)的圆圈中打印“Hello, MFC”。

输出

为什么创建 CFont 指针然后 …

mfc gdi visual-c++ cbitmap

1
推荐指数
1
解决办法
877
查看次数

标签 统计

c++ ×2

mfc ×2

bash ×1

bitbucket ×1

c ×1

cbitmap ×1

dialog ×1

flash ×1

formatting ×1

gdi ×1

git ×1

git-branch ×1

git-merge ×1

increment ×1

prefix ×1

scripting ×1

sed ×1

string ×1

visual-c++ ×1