小编Car*_*arl的帖子

如何配置Visual Studio自定义构建工具以依赖于大量文件?

我需要确保在更改其中一个文件时始终运行对大量文件进行操作的自定义构建工具.

我知道你可以为自定义构建工具指定"附加依赖项",但有没有比每行指定一个文件更好的方法?

dependencies custom-build visual-studio

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

看看C++ new [] cookie.这段代码有多便携?

我想出了这个作为调试问题的快速解决方案 - 我有指针变量及其类型,我知道它指向堆上分配的对象数组,但我不知道有多少.所以我写了这个函数来查看存储在堆上分配内存时的字节数的cookie.

template< typename T >
int num_allocated_items( T *p )
{
return *((int*)p-4)/sizeof(T);
}

//test
#include <iostream>
int main( int argc, char *argv[] )
{
    using std::cout; using std::endl;
    typedef long double testtype;
    testtype *p = new testtype[ 45 ];

    //prints 45
    std::cout<<"num allocated = "<<num_allocated_items<testtype>(p)<<std::endl;
    delete[] p;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想知道这段代码的可移植性.

c++ cookies portability memory-management

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

Git:有没有一种简单的方法来设置一个新分支来跟踪远程分支?

通常的命令是:

git checkout origin/branch_i_want -b branch_i_want
Run Code Online (Sandbox Code Playgroud)

Git 回应:

Branch branch_i_want setup to track remote branch branch_i_want from origin.
Run Code Online (Sandbox Code Playgroud)

这可以。

我的问题很简单。大多数情况下,本地创建的分支与远程分支同名。是否有执行此操作的 git 命令,因此我不需要两次输入分支名称?

换句话说,是否有类似的东西:

git checkout --autocreate-tracking origin/branch_i_want

理论上哪个会创建一个名为 branch_i_want 的本地分支并将其设置为跟踪 origin/branch_i_want ?

git branch tracking

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

如何为Windows编译静态Taglib库?

我不想编译动态库,所以这个问题没用.

我下载了taglib并使用以下方法编译它:

cmake -DENABLE_STATIC=ON -DENABLE_STATIC_RUNTIME=ON -DWITH_MP4=ON -G "Visual Studio 10"
Run Code Online (Sandbox Code Playgroud)

这会生成Visual Studio解决方案,我可以编译"tag"项目,该项目在taglib/Release中生成tag.lib.

当我尝试在测试应用程序中使用库时出现问题 - 没什么,只是一个简单的测试:

#include "stdafx.h"
#include "fileref.h"

int _tmain(int argc, _TCHAR* argv[])
{
    TagLib::FileRef d("");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下链接器错误:

Error   1   error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall TagLib::FileRef::~FileRef(void)" (__imp_??1FileRef@TagLib@@UAE@XZ)  C:\...\taglib_test\taglib_test\taglib_test.obj  taglib_test
Error   2   error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall TagLib::FileRef::FileRef(class TagLib::FileName,bool,enum TagLib::AudioProperties::ReadStyle)" (__imp_??0FileRef@TagLib@@QAE@VFileName@1@_NW4ReadStyle@AudioProperties@1@@Z)    C:\...\taglib_test\taglib_test\taglib_test.obj  taglib_test
Error   4   error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall TagLib::FileName::FileName(char const *)" (__imp_??0FileName@TagLib@@QAE@PBD@Z) C:\...\taglib_test\taglib_test\taglib_test.obj  taglib_test …
Run Code Online (Sandbox Code Playgroud)

windows taglib static-libraries visual-studio-2010

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

如何在 Windows 上设置 taglib 字符集以使用 unicode?

TagLib 使用 CMake 构建系统来创建 Visual Studio 2010 解决方案和项目文件。

生成的项目唯一的问题是字符集设置为 MBCS,而我希望它是 Unicode。

有没有办法通过 CMake 设置这个选项?

我目前正在使用它在 VS2010 命令提示符下在 Windows 上构建 taglib:

cmake -DWITH_MP4=ON -DENABLE_STATIC=ON .
Run Code Online (Sandbox Code Playgroud)

unicode build-automation cmake taglib

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

有没有糟糕的设计模式?

有很多设计模式,很明显,模式本身不是银子弹.但是,根据您的经验,是否存在任何一直导致问题的模式?我想我问的是,是否有某些模式在一段时间后从一个解决方案转变为一个问题呢?

我目前正在处理属于此类别的Singleton类,我想问每个人是否还有其他类似的模式.

design-patterns

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

如何通过TAB键在Window中的控件之间导航?

我通过调用创建了一个窗口CreateWindow,并在其上放置了2个编辑控件.编辑控件具有WS_TABSTOP样式,已启用.我可以更改其文本,但通过TAB键在控件之间导航不起作用.

我把这段代码放在我的消息循环中:

MSG msg;
while ( GetMessage( &msg, NULL, 0, 0 ) )
{
    if ( !msg.hwnd || !IsDialogMessage( msg.hwnd, &msg ) )
    {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,通过TAB导航不起作用,编辑控件没有编辑,并且按TAB发生的唯一事情是选择第一个控件的文本.有谁能够帮我?

c++ windows

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

关于C++中赋值运算符的问题

原谅一些看起来很简单的问题,但我想到了这个用例:

struct fraction {
    fraction( size_t num, size_t denom ) : 
        numerator( num ), denominator( denom )
    {};
    size_t numerator;
    size_t denominator;
};
Run Code Online (Sandbox Code Playgroud)

我想做的是使用如下语句:

fraction f(3,5);
...
double v = f; 
Run Code Online (Sandbox Code Playgroud)

v现持有我的分数所代表的价值.我将如何在C++中执行此操作?

c++ operator-overloading

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

是否存在将C++方言更改为C++ 11的风险,但是在XCode4上保留标准库非C++ 11?

假设我有一个不使用任何C++ 11的跨平台(Win和Mac)生产代码库.

假设mac上的编译器选项已更改为使用C++ 11语言方言,但没有C++ 11标准库.

我已经尝试用谷歌搜索来了解可能的含义,但我的空洞.

我的问题是:

  1. 改变俚语中的语言方言甚至意味着什么?
  2. 做这样的事有什么风险?

c++ compiler-construction clang c++11

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

C++:当派生类中的方法在基础中不是虚拟时,声明虚拟方法是否合法?

基类专门声明该方法是非虚拟的.它适用于Visual Studio 2008,2010和2012以及ideone使用的任何编译器(gcc 4.7+?).

#include <iostream>

class sayhi
{
public:
    void hi(){std::cout<<"hello"<<std::endl;}
};

class greet: public sayhi
{
public:
    virtual void hi(){std::cout<<"hello world"<<std::endl;}
};


int main()
{
    greet noob;
    noob.hi(); //Prints hello world
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这也有效 - 该方法在基类中是私有的和非虚拟的:

#include <iostream>

class sayhi
{
private:
    void hi(){std::cout<<"hello"<<std::endl;}
};

class greet: public sayhi
{
public:
    virtual void hi(){std::cout<<"hello world"<<std::endl;}
};


int main()
{
    greet noob;
    noob.hi(); //Prints hello world
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 这合法吗?
  2. 它为什么有效?

c++ inheritance virtual-functions

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