Tag: visual studio

在纯C中构建Visual Studio 2013项目

做这个的最好方式是什么? 模板似乎只允许C ++(它基本上与C兼容,但不一样。)这样做的正确方法是什么? (特别是#define或其他。)任何帮助将不胜感激。

找不到MSVCR90.DLL

我知道这样的问题已经被问到了,但情况有点不同,所有关于这个问题的答案对我都不起作用。 我正在尝试在VS2008中编译一些C代码,但它不会创建一个exe。 此外,当我尝试用f5运行它时,我得到: 此应用程序无法启动,因为找不到MSVCR90.DLL。 我做了一些谷歌搜索,它说这是因为我的c ++可再发行组件没有安装。 所以我安装了它,重新启动了一切并再次尝试。 但是,唉,我仍然得到同样的错误。 有没有人有任何线索如何解决这个问题?

Windows中CMake的默认生成器是什么?

在一台PC上运行CMake时,CMake默认生成NMake文件。 另一方面,它生成一个Visual Studio项目。 我知道我可以通过在我的CMake语句的末尾添加-G “NMake Makefiles”来覆盖默认值,但我想知道为什么它默认为一个上的Visual Studio项目和另一个上的NMake文件。

Visual C ++运行时malloc / free会将内存返回给操作系统吗?

问题与Will malloc实现将free-ed内存返回系统有很多相似之处? ,但我对Windows / Microsoft Visual Studio的答案以及有关确切虚拟内存状态的详细信息感兴趣。 Visual C ++ CRT会自由地将内存返回给系统吗? 关于虚拟内存分配的内存的确切状态是什么? 在大内存块上释放后,块中的内存是否会被提交,保留或释放? 如果我在免费后拨打_heapmin怎么办?

为什么Visual C ++警告在C中隐式转换从const void **到void *,而不是在C ++中?

摘要 当C程序尝试将指向const数据(如const void **或const char ** )的指针转换为void *时,Microsoft Visual Studio中的C / C ++编译器会发出警告C4090 (即使这样的类型实际上不是指向const的指针。 更奇怪的是,同一个编译器默默接受编译为C ++的相同代码。 这种不一致的原因是什么,为什么Visual Studio(与其他编译器不同)有一个问题,即将指向const的指针隐式转换为void * ? 细节 我有一个C程序,其中在变量参数列表中传递的C字符串被读入一个数组(通过调用va_arg的循环)。 由于C字符串的类型为const char * ,因此跟踪它们的数组的类型为const char ** 。 这个带有const内容的字符串指针数组本身是动态分配的(使用calloc ),我在函数返回之前free它(在处理C字符串之后)。 当我使用cl.exe (在Microsoft Visual C ++中)编译此代码时,即使警告级别较低, free调用也会触发警告C4090 。 由于free取一个void * ,这告诉我编译器不喜欢我将const char **转换为void * 。 我创建了一个简单的例子来证实这一点,我尝试将const void **转换为void * : /* cast.c – Can a […]

使用complex.h库在Visual Studio 2013中编译C代码

http://blogs.msdn.com/b/vcblog/archive/2013/07/19/c99-library-support-in-visual-studio-2013.aspx C99支持添加了visual studio 2013,但我无法在我的“C”代码中使用complex.h。 #include #include int main(void) { double complex dc1 = 3 + 2 * I; double complex dc2 = 4 + 5 * I; double complex result; result = dc1 + dc2; printf(” ??? \n”, result); return 0; } 我得到语法错误。 编辑:抱歉缺少部分。 error C2146: syntax error : missing ‘;’ before identifier ‘dc1’ error […]

Visual C接受错误的参数数量?

为什么在Visual Studio中编译: void foo(int a) {} int main() { foo(1,2); } 有一个警告 source_file.c(4) : warning C4020: ‘foo’ : too many actual parameters 但为什么不是一个错误,因为gcc / clang的情况呢? 我知道K&R风格的函数定义,但这只适用于需要可变数量参数的foo() 。 来自标准的引文允许这将非常感谢。

Timespec:struct type错误c2011

使用Visual Studio 2015在C中执行Pthread程序时出现以下错误 错误C2011’timespec’:’struct’类型重新定义 以下是我的代码: #include #include #include void *calculator(void *parameter); int main(/*int *argc,char *argv[]*/) { pthread_t thread_obj; pthread_attr_t thread_attr; char *First_string = “abc”/*argv[1]*/; pthread_attr_init(&thread_attr); pthread_create(&thread_obj,&thread_attr,calculator,First_string); } void *calculator(void *parameter) { int x=atoi((char*)parameter); printf(“x=%d”, x); }

错误C4996:’scanf’:此函数或变量在c编程中可能不安全

我创建了一个小应用程序,通过使用带参数的用户定义函数来查找最大数量。 当我运行它时,它会显示此消息 错误1错误C4996:’scanf’:此函数或变量可能不安全。 请考虑使用scanf_s。 要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。 详细信息请参见在线帮助。 我该怎么做才能解决这个问题? 这是我的代码 #include void findtwonumber(void); void findthreenumber(void); int main() { int n; printf(“Fine Maximum of two number\n”); printf(“Fine Maximum of three number\n”); printf(“Choose one:”); scanf(“%d”, &n); if (n == 1) { findtwonumber(); } else if (n == 2) { findthreenumber(); } return 0; } void findtwonumber(void) { int a, […]

如何将两个windows vc静态库合并为一个

我有一个两个静态库a.lib和b.lib (C语言),它是使用VC6(Visual Studio 6.0)生成的。 我想将这两个lib合并到一个静态lib c.lib 。 如何在CLI模式下执行此操作? 我已经看到了* nix静态库的合并 。 我想在CLI模式下使用VC6静态库做同样的事情。