Tag: visual c ++

VC / C ++裸属性做什么?

来自msdn 对于使用naked属性声明的函数,编译器生成没有prolog和epilog代码的代码。 您可以使用此function使用内联汇编程序代码编写自己的prolog / epilog代码序列。 裸函数在编写虚拟设备驱动程序时特别有用。 __declspec(naked) declarator 什么是“prolog和epilog代码”。 我看到用C语言编写的库只在libc上运行在设备或固件上。 它调用函数没有问题,naked关键字做了什么以及为什么需要它? 注意:我不确定函数在这些库中使用的调用约定。

H264解析 – 切片头检测

我知道在h264中我们可以通过位模式0x000001检测NAL单元。 是否有一种等效方法来检测NAL单元中的切片头? 如何处理多切片NAL单元? 目前我正在使用h264的解析代码并在相应的结构中获取切片头。

无法建立netifaces

我正在尝试为windows构建python netifaces。 我正在使用microsoft visual c ++ express 2010版。 当我运行命令python setup.py install时,我得到以下日志和错误: running install running bdist_egg running egg_info writing netifaces.egg-info\PKG-INFO writing top-level names to netifaces.egg-info\top_level.txt writing dependency_links to netifaces.egg-info\dependency_links.txt reading manifest file ‘netifaces.egg-info\SOURCES.txt’ writing manifest file ‘netifaces.egg-info\SOURCES.txt’ installing library code to build\bdist.win32\egg running install_lib running build_ext building ‘netifaces’ extension c:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\cl.exe /c /nologo […]

如何将win32 WndProc包装到C ++类中?

这有可能吗? 例如,假设我有以下内容: class Window { private: WNDCLASSEX wc; public: inline WNDCLASSEX getWindowClass() { return wc; } Window(); LRESULT CALLBACK WndProc(HWND hwnd, UINT message, LPARAM lParam, WPARAM wParam); } void RegisterWindow(Window win) { WNDCLASSEX* wc = win.getWindowClass(); RegisterClassEx(wc); } 现在,某处会有一个部分(可能在Window类的构造函数中,需要为WNDCLASSEX分配一个WndProc ,这在Window类中有说明。唯一的问题是,因为它是一个部分class,会出现错误。这样,它是如何实现的?它是静态的吗?即便如此,如果类包装它仍然是某种程度的类的一部分。如果我在类之外创建它,那么简单地抹掉了这一点。

转换为积分类型后C ++枚举类型的符号不正确

我的理解是根据Integral Promotion将C ++枚举转换为整数类型。 在Integral Promotion期间,我们应该首先尝试将值转换为int ,如果值不能用int表示,则应使用unsigned int : C ++ 03 conv.prom: 2)….枚举类型(7.2)的右值可以转换为以下第一种类型的右值,它可以表示枚举的所有值(即bmin到bmax范围内的值,如7.2:int,unsigned int,long或unsigned long。 但是我在VC ++ 2010中的测试显示出相反的结果: enum {A1=60, A2=61,A3=63,A4=64,A5=66,A6=0xffffFFF1}; const bool b1 = A6 < A1; //result b1=true; A6是0xffffFFF1 ,应该是无符号值(十进制4294967281)。 并且,由于此值不能由int表示,因此应将其转换为unsigned int 。 但很明显,当用于比较时, A6被转换为-15。 为什么会这样?

如何为unicode字符制作小写字母

我在VC ++ MFC中转换为unicode字符的小写字母时遇到问题。我在CString Variable.so中有unicode字符,英文MakeLower()工作正常,我得到小写。但它不能将unicode字符转换为小写字母。我确实尝试过STL算法转换: std :: string data =“ИИИЛЛЛЛ”; // bulgerian chars std :: transform(data.begin(),data.end(),data.begin(),:: tolower); 但它无法加载unicode字符,我得到“????” 代替unicode字符的符号。 如果有unicode字符的解决方案,请告诉我。我不喜欢使用boost库。谢谢!

从GIMP导出的C源文件加载图像

我正在尝试为游戏加载openGL纹理。 纹理是从GIMP导出为.C source file的图像。 当我在我的项目中#include这个文件时(使用Visual C ++ 2010 Ultimate),我得到编译器错误,说fatal error C1091: compiler limit: string exceeds 65535 bytes in length 有没有解决方法? 我想将图像导出为C头文件的原因是程序编译图像,我不必提供raw图像文件和可执行文件。 码: #include #include #include #include “Xc” #define X 1 #define O 2 #pragma comment(lib, “glfw.lib”) #pragma comment(lib, “opengl32.lib”) #pragma comment(lib, “gdi32.lib”) using namespace std; float render(); void stepGame(float); void keyboard(int, int); int main(int argv, […]

是strtok()安全使用

我正在阅读很多关于strtok()负面信息,有人说它已经过时了,有人说它不是线程安全的等等。 那么真相是什么,我可以使用strtok()吗? 它是线程安全的吗? 注意:我使用的是Visual C ++。

printf 64位类型说明符问题

我在msdev 2010中看到了__int64类型的一些奇怪行为。有谁能告诉我发生了什么? 我想这里有2个问题,首先是如何显示64位整数,其次是行为 – 即为什么它看起来像__int64实际上是32位int … #include int main() { int vl_idx; unsigned __int64 vl_64; unsigned __int64 vl_64_test; for (vl_idx = 0; vl_idx < 64; vl_idx++) { vl_64 = 1 << vl_idx; printf ("vl_64 (%d) = %I64u\n", vl_idx, vl_64); printf ("vl_64 (%d) = %llu\n", vl_idx, vl_64); printf ("vl_64 (%d) = %lu\n", vl_idx, vl_64); } vl_64_test […]

如何应用结构偏移?

我有一个结构 typedef struct foo { int lengthOfArray1; int lengthOfArray2; int* array1; int* array2; } foo; 我需要为整个结构及其数组的内容分配足够的内存。 假设每个arrays的长度为5 …… foo* bar = (foo*)malloc(sizeof(foo) + (sizeof(int) * 5) + (sizeof(int) * 5)); 我现在必须将array1和array2指向该分配缓冲区中的正确位置: bar->array1 = (int*)(&bar->lengthOfArray2 + sizeof(int)); bar->array2 = (int*)(bar->array1 + lengthOfArray2); 它是否正确? 编辑#1 只是为了消除任何困惑:我试图将内存保留在一个块中,而不是三个。 编辑#2 我不能使用C99,因为MSVC 2010编译器不支持它(http://stackoverflow.com/questions/6688895/does-microsoft-visual-studio-2010-supports-c99)。