我需要确保在更改其中一个文件时始终运行对大量文件进行操作的自定义构建工具.
我知道你可以为自定义构建工具指定"附加依赖项",但有没有比每行指定一个文件更好的方法?
我想出了这个作为调试问题的快速解决方案 - 我有指针变量及其类型,我知道它指向堆上分配的对象数组,但我不知道有多少.所以我写了这个函数来查看存储在堆上分配内存时的字节数的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)
我想知道这段代码的可移植性.
通常的命令是:
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 ?
我不想编译动态库,所以这个问题没用.
我下载了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) TagLib 使用 CMake 构建系统来创建 Visual Studio 2010 解决方案和项目文件。
生成的项目唯一的问题是字符集设置为 MBCS,而我希望它是 Unicode。
有没有办法通过 CMake 设置这个选项?
我目前正在使用它在 VS2010 命令提示符下在 Windows 上构建 taglib:
cmake -DWITH_MP4=ON -DENABLE_STATIC=ON .
Run Code Online (Sandbox Code Playgroud) 有很多设计模式,很明显,模式本身不是银子弹.但是,根据您的经验,是否存在任何一直导致问题的模式?我想我问的是,是否有某些模式在一段时间后从一个解决方案转变为一个问题呢?
我目前正在处理属于此类别的Singleton类,我想问每个人是否还有其他类似的模式.
我通过调用创建了一个窗口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发生的唯一事情是选择第一个控件的文本.有谁能够帮我?
原谅一些看起来很简单的问题,但我想到了这个用例:
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++ 11的跨平台(Win和Mac)生产代码库.
假设mac上的编译器选项已更改为使用C++ 11语言方言,但没有C++ 11标准库.
我已经尝试用谷歌搜索来了解可能的含义,但我的空洞.
我的问题是:
基类专门声明该方法是非虚拟的.它适用于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)
我的问题是:
c++ ×5
taglib ×2
windows ×2
branch ×1
c++11 ×1
clang ×1
cmake ×1
cookies ×1
custom-build ×1
dependencies ×1
git ×1
inheritance ×1
portability ×1
tracking ×1
unicode ×1