Tag: visual c ++

从’void *’转换为指向非”’的指针需要显式转换(第17行)

我正在阅读“学习困难之路”一书,当我尝试运行此程序时,我收到以下错误消息: 从’void *’转换为指向非’void’的指针需要显式转换。 我不知道如何解决这个问题,我是否必须更改结构中的返回变量? 看看无论如何,这里的代码:(在Visual C ++ 2010上编译,还没有尝试过GCC)。 //learn c the hardway #include #include #include #include struct Person { char *name; int age; int height; int weight; }; struct Person *Person_create(char *name, int age, int height, int weight) { struct Person *who = malloc(sizeof(struct Person)); assert(who != NULL); who->name = strdup(name); who->age = age; who->height […]

指针与引用与常规传递值c ++

请在回答之前阅读。 我不希望你为我说清楚。 感谢:D 我试图区分指针和传递值。 而且我认为我理解它们但是我读到的一个原因并不清楚,传递指针和传递值之间的区别是什么。 考虑以下… andy = 25; fred = andy; ted = &andy; 第一行将值25传递给andy。 第二行将andy的值传递给fred。 现在fred拥有值25.第三行传递了对ted的引用。 现在ted保存了andy的内存地址,其值为25.现在看看下一个代码 andy = 25; fred = andy; ted = &andy; joe = *andy; 上面的代码看起来就像第一个代码段,除了我们将指向andy的指针传递给了joe。 现在joe保持指针值为25.这几乎和刚刚做的一样(joe = andy)。 没有* 传递指针值与传递值相比有什么不同? 在我的解释中,似乎joe的指针值仍然受影响,如果后来我决定改变andy /的值,如果我只是通过值,它不会影响。 Ť 据我所知,传递引用和传递指针之间的唯一区别是,一个保存地址,另一个保存该地址内的值。 如果任何保持该值引用的变量,它仍然可以改变,决定改变它。 如果是这种情况,通过引用传递和传递值的意义是什么。 这是我正在阅读的内容的链接 http://www.cplusplus.com/doc/tutorial/pointers/ 多谢你们!!!

MSVC中的伪寄存器

Borland C具有伪寄存器_AX,_BX,_FLAGS等,可用于’C’代码以将寄存器保存到临时变量。 有没有MSVC等价物? 我尝试了@ AX,@ BX等,但编译器(MSVC1.5)给出了错误(’40’无法识别的符号)。 我正在开发一个16位预启动应用程序,无法使用。 谢谢。

在Visual C ++中接受来自客户端(套接字编程)的连接的问题

我在Visual C ++中编写了一个简单的单线程客户端服务器应用程序。 当我运行我的服务器时,我等待一段时间它接受来自客户端的一些请求。 当我将客户端连接到服务器时。 客户端上的日志消息报告发送14个字节,服务器上没有消息。 我已经编写了一个print语句来打印控制台上服务器接受的任何内容,但服务器不打印任何内容。 在我看来,客户端已连接到其他服务器。 客户端和服务器代码如下。 服务器代码 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #include #include #include #include #include #define DEFAULT_PORT “27015” #define DEFAULT_BUFLEN 512 #pragma comment(lib, “Ws2_32.lib”) int main() { WSADATA wsdata; int result = WSAStartup(MAKEWORD(2,2),&wsdata); if (result != 0){ printf(“%s”,”Unable to initilize windows socket\n”); getch(); return 1; } struct addrinfo *addrResult […]

用于启动App的GetCurrentDirectory。 c ++

可能重复: Win32:查找正在运行的进程EXE所在的目录 如何在Windows(C ++ Win32或C ++ / CLI)中获取应用程序可执行文件名? 嗨,我想让我的应用程序在statup上运行,它使用同一个目录中的一些文件。它运行良好但是当它在启动时启动时,GetCurrentDirectory是“c:\ Documents and Settings \ User \”..但我想要exe文件的实际路径。我可以用c ++获取它。 请帮我。 谢谢。

初始化程序不是常量,错误C2099,编译用c编写的用于python的模块

我试图编译一个名为distance的python模块,在Windows 10上使用msvc 2017编译“python setup.py install –with-c”,我收到此错误, Cdistance / distance.c(647):错误C2099:初始化器不是常量 Cdistance / distance.c(689):错误C2099:初始化器不是常量 错误:命令’C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ VC \ Tools \ MSVC \ 14.10.25017 \ bin \ HostX64 \ x64 \ cl .exe’失败,退出状态为2 这是第647行的代码 646 PyTypeObject IFastComp_Type = { 647 PyVarObject_HEAD_INIT(&PyType_Type, 0) 648 “distance.ifast_comp”, /* tp_name */ 649 sizeof(ItorState), […]

将char数组中的数字存储到VC ++中的INTEGER变量中。

我的场景如下:(C ++) 在char a [10]中,数组a []具有元素(数字),如“1”,“2”,“3”等…. 说一个[0] =’1′; a [1] =’2′; a [2] =’3′; 现在a []存储3个字符’1’,’2’和’3’。 我想将它存储为int 123(整数123)。 如何在C ++中实现这一目标?

使用Unicode行分隔符编译UTF-8编码的源

使用最新版本的Microsoft Compiler(包含在Win7 SDK中),我试图编译一个使用UTF-8编码的源文件和unicode行分隔符。 不幸的是,即使我在文件的开头包含UTF-8签名,代码也不会编译。 例如,如果我尝试编译它: #include int main (void) { printf(“Hello!”); return 0; } 我会看到以下错误: 提示> cl test.c Microsoft(R)32位C / C ++优化编译器版本15.00.30729.01 for 80×86版权所有(C)Microsoft Corporation。 版权所有。 test.c test.c(1):警告C4067:预处理器指令后面的意外令牌 – 预期换行符Microsoft(R)Incremental Linker Version 9.00.30729.01版权所有(C)Microsoft Corporation。 版权所有。 /out:test.exe test.obj LINK:致命错误LNK1561:必须定义入口点 以前有人遇到过这个问题吗? 有解决方案? 谢谢! 安德鲁

如何在c中为以下要求创建递归目录?

我希望有超过一百万个具有唯一名称的文件。 有人告诉我,如果我将所有这些文件放在一个或两个目录中,这些文件的搜索速度将非常慢。 所以我想出了以下目录架构。 我希望目录结构分支出10个子目录,子目录的级别将是4.因为文件名保证是唯一的我想使用这些文件名来制作可用于放置文件的哈希值在一个目录中,以后也可以找到它。 随机散列值将使目录具有大约1,000个文件。 因此,如果F是根目录,则插入或搜索文件将必须执行以下步骤: 我想使用0-9之间的数字作为目录名称 h=hash(filename) sprintf(filepath,”f//%d//%d//%d//%d//.txt”,h%10,h%10,h%10,h%10); 我如何创建这些目录? 编辑: 所有文件都是文本文件。 该计划将分发给许多人,以收集研究信息。 因此,重要的是这些文件是这样创建的。 编辑: 我创建了以下代码来实现perreal的伪代码。 它编译成功但会给出最后给出的运行时错误。 sprintf()行发生错误。 #include #include #include void make_dir(int depth, char *dir) { if (depth < 4) { if (! CreateDirectoryA (dir,NULL)) for (int i = 0; i < 10; i++) { sprintf(dir,"\\%d",i); char *sdir=NULL ; strcpy(sdir,dir); CreateDirectoryA(sdir,NULL); make_dir(depth + 1, […]

我的Opencv应用程序处理速度非常慢

我正在构建一个OpenCV应用程序,它可以从相机中捕获video,并在删除背景后将其覆盖在另一个video上。 我无法达到合理的速度,因为它以大约1 fps的速度播放输出,而我的背景移除工作速度为3fps。 有没有办法以正常速度显示背景video并以3fps覆盖已处理的video? 我试着评论我的代码,我意识到问题主要在于渲染部分本身。 我尝试显示video和我的网络摄像头,我注意到用openCV显示的实际fps和video的fps有所下降。 这是示例代码: void main() { CvCapture* capture, *Vcap; capture = cvCaptureFromCAM(0); if(!capture) { printf(“Video Load Error”); } Vcap = cvCaptureFromAVI(“bgDemo.mp4”); //printf(“\nEntered BGR”); if(!Vcap) { printf(“Video Load Error”); } while(1) { IplImage* src = cvQueryFrame(Vcap); if(!src) { Vcap = cvCaptureFromAVI(“bgDemo.mp4”); continue; } IplImage* bck1 = cvCreateImage(cvGetSize(src),8,3); cvResize(src,bck1,CV_INTER_LINEAR); cvShowImage(“BCK”,bck1); cvWaitKey(1); } }