小编Abh*_*ain的帖子

如何将zlib,gzip和zip相关联?它们有什么共同之处,它们有何不同?

zlib中使用的压缩算法与gzipzip中的压缩算法基本相同.什么是gzipzip?它们有何不同,它们是如何相同的?

compression zip gzip zlib

921
推荐指数
3
解决办法
29万
查看次数

x64 Native Tools命令提示符和x64 Cross Tools命令提示符之间有什么区别?

我在64位Windows 8.1上安装了32位Visual Studio 2013.我有5个命令提示符:

  1. VS2013的开发人员命令提示符
  2. VS2013 ARM交叉工具命令提示符
  3. VS2013 x64交叉工具命令提示符
  4. VS2013 x64本机工具命令提示符
  5. VS2013 x86本机工具命令提示符

我不明白之间的区别:

  • VS2013与VS2013 x86 Native Tools命令提示符的开发人员命令提示符
  • VS2013 x64交叉工具命令提示符与VS2013 x64本机工具命令提示符

windows command-prompt visual-studio visual-c++

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

如何将Win8.1中的操作系统版本作为GetVersion/GetVersionEx弃用?

我有一些场景,我想特别了解操作系统主要/次要版本和内部版本号等.

从Windows 8.1开始GetVersion,GetVersionEx已被弃用,说明:

[ Windows 8.1之后的版本中可能会更改或无法使用GetVersion/GetVersionEx.相反,使用版本助手功能]

没有版本帮助程序API可以帮助我获取操作系统版本号,而是帮助我验证或了解我的版本是否与上述版本相同或更高.可以做些什么?

windows winapi minimumosversion visual-studio-2013 windows-8.1

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

std :: vector是否是线程安全的并且默认是并发的?为什么或者为什么不?

使动态数组线程安全且并发是什么意思?比如说,std::vector.

  1. 两个线程可能想要插入相同的位置.不需要同步,因为它将根据线程调度完成.
  2. 一个线程擦除而另一个线程将访问相同的元素?这不是数据结构问题我认为,这是一个使用问题.

那么有什么需要做的std::vector才能使它成为线程安全和并发的,或者它是默认的线程安全和并发的吗?

c++ concurrency vector lock-free data-structures

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

objcopy和dsymutil有什么区别?

这两个命令是否在Linux上:

objcopy --only-keep-debug foo foo.dbg
objcopy --add-gnu-debuglink=foo.dbg foo
Run Code Online (Sandbox Code Playgroud)

相当于下面的mac

dsymutil <binary> -o <binary>.dSYM
Run Code Online (Sandbox Code Playgroud)

在某种意义上相当于

  1. 它创建一个独立的调试信息文件.
  2. 它在可执行文件和调试信息文件之间创建了一个链接.

然后剥离

是linux上的命令:

objcopy --strip-debug foo
Run Code Online (Sandbox Code Playgroud)

要么

strip -g <binary>
Run Code Online (Sandbox Code Playgroud)

相当于下面的mac

strip -S <binary>
Run Code Online (Sandbox Code Playgroud)

gcc gdb clang debug-symbols lldb

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

以编程方式了解给定路径是 Mac OS X 上的网络路径还是本地路径

如何在运行时以编程方式确定给定路径是 Mac OS X 上的网络路径还是本地路径?

例如: 1. /Volumes/abc/xyz (使用 smb 安装) 2. ../test/pqr (应用程序位于共享网络路径上,因此当前工作目录也是网络路径,因此相对路径也是网络路径)

就像在 Windows 上一样,下面的代码将确定 pPath 是否是网络共享路径(如 * 1. \TallyDT100\c\test\file.txt 2. z:\test\file.txt (当 z: 映射到时的网络路径)一些网络路径)。

    UNIVERSAL_NAME_INFO   * universalname   = NULL;             ///< for getting the universal path name of file on network share.
    DWORD                   retval;                             ///< for getting the return value from WNetGetUniversalName
    DWORD                   length          = MAX_PATH_LEN;     ///< length of universal name which would be made.


// The memory for getting the universal name information is allocated.
universalname = …
Run Code Online (Sandbox Code Playgroud)

macos cocoa filepath core-foundation

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

DLL主要在Windows Vs. __attribute __((构造函数))Linux上的入口点

考虑代码

可执行程序:

int main ()
{

    printf("Executable Main, loading library\n");
#ifdef HAVE_WINDOWS
    HMODULE lib = LoadLibraryA ("testdll.dll"); 
#elif defined(HAVE_LINUX)
    void * lib  = dlopen("testdll.so", RTLD_LAZY);  
#endif 

    if (lib) {
        printf("Executable Main, Freeing library\n");
    #ifdef HAVE_WINDOWS
        FreeLibrary (lib); 
    #elif defined(HAVE_LINUX)
        dlclose(lib);   
    #endif 
    }
    printf("Executable Main, exiting\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

DLL

struct Moo
{
    Moo() { printf("DLL Moo, constructor\n"); }
    ~Moo() { printf("DLL Moo, destructor\n"); }
};

Moo m;

#ifdef HAVE_WINDOWS
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved)
{
    switch …
Run Code Online (Sandbox Code Playgroud)

c++ linux windows shared-libraries dllmain

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

全双工套接字与使用两个套接字,一个用于读取,另一个用于写入

我想知道,

第一个问题:每个对等点使用一个套接字(全双工)与两个套接字(单工)的优缺点是什么:一个用于读取,另一个用于写入?特别是在性能和​​资源利用率方面。

第二个问题以防万一,如果我选择在每个对等点上使用超过 1 个套接字,那么我所做的所有读写操作都是如此。那么它会帮助我扩展处理未处理的消息吗?

第三个问题:什么可以帮助我确定每个对等点的套接字数量?网络带宽?传入和传出的消息数量?

所有问题都是不同的,没有任何相互关系。

sockets networking duplex

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

使用 cl/gcc/clang 的默认结构包装是什么?

在 msdn for cl 编译器选项 /Zp 上,提到“在 8 字节边界(默认)上打包结构”。这是否意味着如果数据类型的大小 > 8 字节,默认情况下(没有编译器选项或编译指示包)它不会自然对齐,而是具有 8 字节对齐。如果是,GCC/clang 是这种情况吗?

我检查了 GCC,使用-fpack-struct__uint128_t,它没有任何这样的默认值。例如sizeof(tStruct)是 32 和 24:

struct tStruct {
uint64_t    a;
__uint128_t b;
};
Run Code Online (Sandbox Code Playgroud)

我无法在 Windows 上进行检查,因为它不提供任何大于 8 字节的数据类型。

c++ gcc visual-c++ cl struct-member-alignment

5
推荐指数
0
解决办法
1839
查看次数

Win32 InterlockedIncrement 和 InterlockedExchange 跨进程是原子的吗?

MSDN 说,互锁函数提供了一种简单的机制来同步访问由多个线程共享的变量。

如果变量位于进程的共享内存中,我不确定它们是否可以跨多个进程的线程工作。

同样,GNU GCC 编译器的内在函数:__sync_add_and_fetch 和 __sync_lock_test_and_set 怎么样?

linux windows gcc atomic atomic-swap

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

可执行导出符号但未导出,因为可执行文件本身未引用它们

我有一个特定的用例,其中可执行文件需要导出某些符号,这些符号由可执行文件在运行时加载的动态加载的 DLL 导入和使用。

可执行文件与一些静态库链接,这些静态库实际上具有导出的符号,而 DLL 使用这些静态库标头导入这些符号。

如果这些符号在可执行文件中未使用或未引用,则链接器将删除它们,因此它们不会被导出,因此在加载时不可用于 DLL。

我分别使用 --whole-archive 和 -force_load 选项在 GCC / clang 上解决了这个问题。

Windows 上的 MSVC 怎么样?我使用 __declspec(dllexport) 和 __declspec(dllimport) 在 Windows 上导出和导入符号。

编辑:有关代码参考,您可以在此处找到代码: https: //github.com/hunkabhicupid/exeexport

这个问题与这些帖子12类似,但这些帖子的答案并没有帮助我找到解决方案,或者我发现它们没有用。

gcc shared-libraries clang dllexport visual-c++

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

typedef with const且没有const限定符

    typedef void* TVPtr;
    typedef const void* CTVPtr;

const TVPtr func3 (const TVPtr p)
{
    return p;
}

const void* func4 (const void* p)
{
    return p;
}

CTVPtr func5 (CTVPtr p)
{
    return p;
}


int main ()
{
    const uint64_t i = 10;

    func3(&i);  // compilation error here
                // cannot convert argument 1 from 'const uint64_t *' 
                // to 'const TVPtr' Conversion loses qualifiers    
    func4(&i);  // no compilation error
    func5(&i);  // no compilation error
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么有一个错误是一个案例而不是另外两个?

c c++ typedef

0
推荐指数
2
解决办法
572
查看次数