标准C库实现,特别是glibc(GNU C库)提供链表,堆栈等.数据结构,还是我们必须自己滚动?
谢谢.
我想将旧的About菜单项添加到我的应用程序中.我想将它添加到应用程序的"系统菜单"(当我们点击左上角的应用程序图标时弹出的那个).那么,我怎么能在.NET中做到这一点?
我想看一个真实世界的应用程序的源代码,以了解良好的编程实践等.所以我选择了Git并下载了1.8.4版本的源代码.
在随机浏览各种文件之后,我在这两个文件中引起了我的注意:strbuf.h strbuf.c
这两个文件显然使用此文档定义了API .
我有两个问题:
为什么第16,17,18,19行的函数声明和'strbuf.h'第6行的全局变量声明为extern?
为什么"strbuf.h"在strbuf .c中不是#included?
作为新手程序员,我总是学会在.c文件中编写函数定义,而函数声明,宏,内联等都是用.h文件编写的,然后在每个.c文件中#included都要使用这些文件.功能等
有人可以解释一下吗?
可能重复:
没有汇编的C/C++函数定义
嗨再次,我想知道printf如何在内部工作...在内部我指的是使用什么底层系统调用/ ISR等机制...而不是关于变量参数列表...
原因:我正在使用FASM但是控制台i/o几乎没有,我知道我可以使用c库中提供的printf(我不知道如何但这是另一个点)
谢谢.
我知道之前已经有很多关于C中错误处理的问题,但这是关于errno的东西.
我想问一下是否应该使用errno/perror功能在运行时优雅地处理错误.我问这是因为MSVC使用它而Win32 api也大量使用它.我对gcc或'linux api'一无所知.今天gcc和MSVC都说errno/perror可以在多线程环境中安全使用.所以你的观点是什么?
谢谢.
我有一个非常复杂的VC2008项目.为了理解它的内部工作,我试图简化它,现在我得到大多数文件的以下类型的289个错误:
错误5错误C2471:无法更新程序数据库'c:\ users\ryan\documents\visual studio 2008\projects\vc\myinfo\cli\debug\vc90.pdb'c:\ users\ryan\documents\visual studio 2008\projects\vc\myinfo\cli\mediainfo\file__analyze_buffer_minimizesize.cpp 1 CLI
错误6致命错误C1083:无法打开程序数据库文件:'c:\ users\ryan\documents\visual studio 2008\projects\_vc\myinfo\cli\debug\vc90.pdb':没有这样的文件或目录c:\ users\ryan\documents\visual studio 2008\projects\vc\myinfo\cli\mediainfo\file__analyze_buffer_minimizesize.cpp 1 CLI
我的系统:win7/VS2008
我有一个基于.net3.5的exe,当我在PC上运行时会给出以下消息:"无法找到运行此应用程序的运行时版本."????
电脑上安装了winxp sp3和vs2010,因此基于.net4的应用程序正在运行但基于.net3.5的exes不是.据我说,如果电脑有.net3.5那么它应该可以运行.net3.5应用????
谢谢
我有一个结构:
struct ABC
{
int size;
int arr[15];
};
Run Code Online (Sandbox Code Playgroud)
我知道我不能把'int size'变成'const int size'所以我怎样才能保持size成员不被意外/故意修改.在C中有办法解决吗?
谢谢.
在我的小型WPF程序中,我想在鼠标点击消息框中显示客户区域的"背景颜色"的名称....我该怎么办?
系统:Win7(32位)/ VS2008
谢谢.
...
char A,M,Q,Q_1,count;
int main()
{
system("cls");
count=8;
printf("%d",count);
printf("\n\tEnter the Multiplicand(M) : ");
scanf("%d",&M);
printf("\n\tEnter the Multiplier(Q) : ");
scanf("%d",&Q);
printf("%d",count); //prints 0???????
.......
}
Run Code Online (Sandbox Code Playgroud)
我不明白'count'的值如何变为0.
请帮忙...谢谢.
系统:win7/VS2008
编辑:在了解我在做什么之后(感谢PéterTörök),我在scanfs之后将作业移到了'count',这解决了问题...谢谢.
我开始win32编程很有趣,因为我喜欢复杂的东西,我喜欢编程(这就是Charles Petzold和Jeffrey Richter编写这些精美书籍的错误.)可能是因为我有性能代码的东西.
现在,真正的问题是:我将使用GetEnvironmentVariable()[win32 API函数]和getenv()[标准CRT函数]的示例.
这两个都返回作为参数提供的环境变量的值.
那么使用哪一个会更有效,或者换句话说哪一个具有更短的调用堆栈,哪一个更直接?想想一些功能.被称为百万次.
我相信他们中的任何一个都映射到另一个.我是对的还是我在这里遗漏了一些东西.
简介:在为win32 api编程时,如果api和c/c ++库中都有可用的函数提供相同的功能,我应该使用哪一个?
谢谢.
1)保留返回值,用于指示成功(非零值)、错误(0)。
2)使用 errno,perror 提供更多信息。关于错误的类型。
3)使用参数返回值。
如果可以,那么我可以定义自己的错误代码(不与现有代码冲突)并使用 errno 来设置/检索它们。我认为现在我无法将 perror 与这些代码一起使用(它总是会说:未知错误),但我可以定义自己的基于 switch case 的函数来返回错误代码的描述。我可以定义自己的变量,但是为了使 errno现代化且线程安全,我们已经做了很多工作。
例如:
int val;
if(MyPop(&val))
pintf_s("\n %d popped from my stack. . .",val);
else
printf_s(Myperror());
Run Code Online (Sandbox Code Playgroud)
谢谢。
我们有在Windows和Linux系统中在堆栈上分配内存的功能,但是不鼓励它们使用它们也不是C标准的一部分?这意味着它们提供了一些非标准行为.由于我没有经验,我无法理解从堆栈分配内存而不是使用堆时可能出现的问题?
谢谢.
编辑:我的观点:由于Delan已经解释过分配给程序的堆栈数量是在编译期间决定的,所以如果我们用完它就不能从操作系统中请求更多的堆栈.唯一的出路就是崩溃.所以最好留下堆栈来存储诸如变量,函数,函数调用,数组,结构等主要内容,并使用堆与OS /机器的容量一样多.
c ×9
.net ×2
c++ ×2
visual-c++ ×2
winapi ×2
.net-3.5 ×1
.net-4.0 ×1
assembly ×1
background ×1
c# ×1
coding-style ×1
gcc ×1
git ×1
glibc ×1
struct ×1
systemmenu ×1
winforms ×1
wpf ×1