标签: c

C/C++包括头文件顺序

应该指定哪些顺序包含文件,即将一个标题包含在另一个标题之前的原因是什么?

例如,系统文件,STL和Boost是在本地包含文件之前还是之后运行?

c c++

265
推荐指数
8
解决办法
10万
查看次数

我什么时候应该使用mmap进行文件访问?

POSIX环境提供至少两种访问文件的方法.有标准的系统调用open(),read(),write(),和朋友,但也有使用的选项mmap(),将文件映射到虚拟内存.

何时优先使用一个而不是另一个?它们各自的优势是什么,包括两个接口?

c file-io posix mmap

263
推荐指数
6
解决办法
10万
查看次数

如何在C中定义枚举类型(枚举)?

我不确定使用C枚举的正确语法是什么.我有以下代码:

enum {RANDOM, IMMEDIATE, SEARCH} strategy;
strategy = IMMEDIATE;
Run Code Online (Sandbox Code Playgroud)

但这不会编译,出现以下错误:

error: conflicting types for ‘strategy’
error: previous declaration of ‘strategy’ was here
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

c enums

263
推荐指数
8
解决办法
49万
查看次数

malloc()和free()如何工作?

我想知道如何mallocfree工作.

int main() {
    unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char));
    memset(p,0,4);
    strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes**
    cout << p;
    free(p); // Obvious Crash, but I need how it works and why crash.
    cout << p;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果答案在记忆水平上是深入的,如果可能的话,我将非常感激.

c c++ malloc free memory-management

263
推荐指数
9
解决办法
14万
查看次数

如何避免"如果"链?

假设我有这个伪代码:

bool conditionA = executeStepA();
if (conditionA){
    bool conditionB = executeStepB();
    if (conditionB){
        bool conditionC = executeStepC();
        if (conditionC){
            ...
        }
    }
}

executeThisFunctionInAnyCase();
Run Code Online (Sandbox Code Playgroud)

executeStepX当且仅当前一个成功时才应执行函数.无论如何,executeThisFunctionInAnyCase应该在最后调用该函数.我是编程的新手,对于这个非常基本的问题感到抱歉:有没有办法(例如在C/C++中)避免长if链产生那种"代码金字塔",代价是代码易读性?

我知道如果我们可以跳过executeThisFunctionInAnyCase函数调用,代码可以简化为:

bool conditionA = executeStepA();
if (!conditionA) return;
bool conditionB = executeStepB();
if (!conditionB) return;
bool conditionC = executeStepC();
if (!conditionC) return;
Run Code Online (Sandbox Code Playgroud)

但约束是executeThisFunctionInAnyCase函数调用.该break声明是否可以某种方式使用?

c c++ if-statement control-flow

262
推荐指数
25
解决办法
4万
查看次数

打开文件实际上做了什么?

在所有编程语言(我至少使用过)中,必须先打开文件才能读取或写入文件.

但这种开放式操作实际上做了什么?

典型功能的手册页实际上并没有告诉你除了"打开读/写文件"以外的任何内容:

http://www.cplusplus.com/reference/cstdio/fopen/

https://docs.python.org/3/library/functions.html#open

显然,通过使用该函数,您可以告诉它涉及创建某种有助于访问文件的对象.

另外一种方法是,如果我要实现一个open函数,它需要在Linux上做什么?

c linux

261
推荐指数
7
解决办法
2万
查看次数

如何获取程序运行的目录?

是否存在与平台无关且与文件系统无关的方法来获取使用C/C++运行程序的目录的完整路径?不要与当前的工作目录混淆.(请不要建议使用库,除非它们是clib或STL等标准库.)

(如果没有平台/文件系统无关的方法,也欢迎在Windows和Linux中使用特定文件系统的建议.)

c c++ working-directory

260
推荐指数
11
解决办法
48万
查看次数


C默认参数

有没有办法在C中为函数指定默认参数?

c arguments default-parameters

258
推荐指数
14
解决办法
19万
查看次数

核心转储,但核心文件不在当前目录中?

在运行C程序时,它说"(core dumped)"但我看不到当前路径下的任何文件.

我已经设置并验证了ulimit:

ulimit -c unlimited 
ulimit -a 
Run Code Online (Sandbox Code Playgroud)

我还试图找到一个名为"core"的文件,但没有得到核心转储文件?
任何帮助,我的核心文件在哪里?

c linux coredump

258
推荐指数
12
解决办法
34万
查看次数