javascript

git

java

python

git-remote

c++

github

django

c#

reactjs

html5

analytics

node.js

performance

branch-prediction

git-commit

git-revert

validation

email-validation

undefined

c-* nix select和exceptfds / errorfds语义

select syscall需要3个filedescriptor集,用于监视fds的可读/可写性以及filedescriptor上的“ exceptions”。

我的选择手册页对exceptfd描述符集的描述不多。 它是干什么用的; 可以并且会在文件描述符上通知什么样的异常?

我假设这对于描述符类型可以是不同的……无论是TCP套接字,管道,tty等)。 没有人能提供有关select可以报告各种描述符的错误的更多信息吗?

trans by 2020-08-12T10:26:48Z

c-为什么访问数组中的元素需要固定的时间?

可以说我有一个数组为:

int a [] = {4,5,7,10,2,3,6}

当我访问a [3]之类的元素时,它实际上在幕后发生了什么?为什么许多算法书籍(例如Cormen书籍...)都说它需要固定的时间?

(我只是低级编程的新手,所以我想向你们学习更多)

trans by 2020-08-12T01:28:17Z

首页> C#>如何使用不带-l或不遵循libNAME.so命名约定的库的硬编码路径的GCC进行链接?

我有一个共享库,希望将其链接为使用GCC的可执行文件。 共享库具有非标准名称,其格式不是libNAME.so,因此我不能使用通常的-l选项。 (它碰巧也是Python扩展,因此没有“ lib”前缀。)

我能够将库文件的路径直接传递给链接命令行,但这会导致库路径被硬编码到可执行文件中。

例如:

g++ -o build/bin/myapp build/bin/_mylib.so

有没有一种方法可以链接到该库而不会导致路径被硬编码到可执行文件中?

trans by 2020-08-11T21:38:43Z

在C中找到最高位

我需要的是可以输入数字的东西,它将返回最高位。 我敢肯定有一个简单的方法。 下面是一个示例输出(左边是输入)

1 -> 1
2 -> 2
3 -> 2
4 -> 4
5 -> 4
6 -> 4
7 -> 4
8 -> 8
9 -> 8
...
63 -> 32
trans by 2020-08-11T17:06:08Z

c-枚举中的元素数

在C语言中,有没有一种很好的方法来跟踪枚举中元素的数量? 我见过

enum blah {
    FIRST,
    SECOND,
    THIRD,
    LAST
};

但这仅在项目是连续的且从零开始时才有效。

trans by 2020-08-11T17:02:37Z

c-结构打包是确定的吗?

例如,假设我在不同的项目中有两个等效的结构a#pragma pack

typedef struct _a
{
    int a;
    double b;
    char c;
} a;

typedef struct _b
{
    int d;
    double e;
    char f;
} b;

假设我没有使用任何指令,例如#pragma pack,并且这些结构是在同一体系结构的同一编译器上编译的,它们在变量之间是否具有相同的填充?

trans by 2020-08-11T16:21:57Z

c-实施VM的教程/资源

我想自我教育的目的是为动态语言实现一个简单的虚拟机,更喜欢用C语言。类似Lua VM,Parrot或Python VM的东西,但是更简单。 除了查看现有VM的代码和设计文档以外,是否有任何良好的资源/教程来实现这一目标?

编辑:为什么要近距离投票? 我不明白-这是不是编程。 如果我的问题有特定问题,请发表评论。

trans by 2020-08-11T11:47:05Z

编译器降低程序的时间复杂度合法吗? 是否认为这是可观察到的行为?

(注意:这是一个语言律师问题;我不是在指任何特定的现有编译器。)

什么时候允许编译器降低程序的时间复杂度?
在什么情况下(如果有)将其视为“可观察到的行为”,为什么?
(例如,编译器可以合法地将多项式时间程序“简化”为指数时间程序吗?)

如果答案在C和C ++或两者的不同版本中有所不同,请说明不同之处。

trans by 2020-08-11T04:08:31Z

c-在.so fi中链接到较旧的符号版本

在x86_64 linux上使用gcc和ld,我需要链接到库的较新版本(glibc 2.14),但是可执行文件需要在具有较旧版本(2.5)的系统上运行。 由于唯一不兼容的符号是memcpy(需要memcpy@GLIBC_2.2.5,但是提供memcpy@GLIBC_2.14的库),我想告诉链接器,它应该采用我指定的旧版本,而不是使用memcpy的默认版本。 。

我发现这样做很尴尬:只需在链接器命令行中指定旧.so文件的副本即可。 这可以正常工作,但是我不喜欢将多个.so文件(只能通过指定我链接到的所有旧库才能工作,也有对memcpy的引用)来将其检入svn并由我的构建系统使用的想法 。

因此,我正在寻找一种告诉链接器采用旧版本符号的方法。

对我不起作用的替代方法是:

  • 使用asm .symver(如Trevor Pounds的博客的Web存档中所述),因为这将要求我确保symver位于所有使用memcpy的代码之前,这将非常困难(带有第三方代码的复杂代码库)
  • 使用旧库维护构建环境; 仅仅因为我想在我的桌面系统上进行开发,而在网络中同步内容将是皮塔饼。

考虑链接器的所有工作时,似乎很难实现,毕竟它也有一些代码可以找出符号的默认版本。

只要不像编辑所生成的二进制文件那样怪异的技巧,任何其他与简单链接程序命令行具有相同复杂性级别的想法(例如创建简单的链接脚本等)也将受到欢迎。

编辑:为了保护以后的读者,除了以下思想外,我还为链接器找到了--wrap选项,该选项有时也很有用。

trans by 2020-08-10T23:15:53Z

一次了解C和C ++中f()和f(void)之间的区别,然后

好的,所以我听取了关于此主题的不同意见,只是想确保我正确理解它。

对于C ++

声明ff的意思完全相同,函数va_list不带任何参数。 同上的定义。

对于C

声明f表示f不采用任何参数。

声明f表示函数f可能带有或不带有参数,如果有,则我们不知道它们是什么类型的参数,或者有多少个参数。 请注意,它与省略号不同,我们不能使用va_list

现在,这里变得有趣。

情况1

宣言:

void f();

定义:

void f(int a, int b, float c)
{
   //...
}

情况二

宣言:

void f();

定义:

void f()
{
   //...
}

题:

在情况1和2中,当我们调用f带有正确的参数,错误的参数和根本没有参数时,会在编译时发生什么情况? 在运行时会发生什么?

附加问题:

如果我用参数声明f,但在没有参数的情况下进行定义,会有所不同吗? 我应该能够处理函数体中的参数吗?

trans by 2020-08-10T17:30:59Z

C ++-生成文件的好工具吗?

我正在寻找一种可以为不同编译器(gcc,microsoft vc ++,borland等)和不同平台(Win,Linux,Mac)的C / C ++项目生成makefile的工具。

trans by 2020-08-10T14:15:43Z

C中的隐式函数声明

术语“函数的隐式声明”是什么意思? 在不包含适当头文件的情况下,对标准库函数的调用会产生警告,例如:

int main(){
  printf("How is this not an error?");
  return 0;
}

是否应该在未声明错误的情况下使用函数? 请详细说明。 我搜索了该站点,发现了类似的问题,但找不到明确的答案。 大多数答案都说过有关包含头文件的内容以消除警告,但是我想知道这不是错误。

trans by 2020-08-10T13:03:38Z

检查字符串是否在C中包含另一个字符串的简单方法?

这个问题已经在这里有了答案:

  • 检查子字符串是否存在于C中的字符串中 11个答案

我是该语言的新手。 假设我有一个来自HTTP请求的字符串,例如

char * request = "GET /favicon.ico HTTP/1.1";

我特别想知道favicon是否在该请求中,也许带有布尔值。 相对简单的方法是什么? 我知道如何用Java做到这一点,但是我对C更加迷失了。

谢谢!

trans by 2020-08-10T12:22:03Z

c ++-结构声明中的冒号是什么意思,例如:1,:7,:16或:32?

以下C ++代码是什么意思?

unsigned char a : 1; 
unsigned char b : 7;

我猜它创建了两个字符a和b,它们都应该是一个字节长,但是我不知道“:1”和“:7”部分的作用。

trans by 2020-08-10T08:24:02Z

c-实施HashMap

如何从头开始用C创建Hashmap?将考虑哪些参数,您将如何测试哈希图的优劣? 就像在说哈希映射完成之前需要运行的基准测试用例一样。

trans by 2020-08-10T05:25:48Z

c ++-获取可执行文件中使用的静态库列表

由于300448181620519831983仅列出了动态库,是否有一种方法可以提取有关用于创建可执行文件的静态库的信息?

trans by 2020-08-10T00:19:36Z

c-程序可以同时在同一FILE *上调用fflush()吗?

如果多个线程在同一FILE*变量上同时调用fflush(),会发生什么不好的事情(例如未定义的行为,文件损坏等)?

澄清:我并不是说要同时写入文件。 我的意思是同时刷新它。

线程不会同时读取或写入文件(它们只能在关键部分内写入文件,一次只能写入一个线程)。 它们仅刷新到关键部分之外,以便更快地释放关键部分,以便让其他人执行其他工作(文件写入除外)。

尽管可能发生一个线程正在写入文件(在关键部分内),而另一个线程正在刷新文件(在关键部分外)。

trans by 2020-08-09T23:51:05Z

语言律师-C程序是否需要main()?

标题说明了一切。 main()函数对于C程序是否绝对必要?

我之所以这样问是因为我正在查看Linux内核代码,但是没有看到main()函数。

trans by 2020-08-09T21:39:40Z

gcc-C中sizeof的内部机制?

我使用sizeof来获取C语言中一个结构的大小,但是得到的结果是意外的。

struct sdshdr {
    int len;
    int free;
    char buf[];
};


int main(){
    printf("struct len:%d\n",(sizeof(struct sdshdr)));
    return 0;
} //struct len:8, with or without buf

我的问题是为什么gcc -v不占用任何空间,为什么在64位CPU上int类型的大小仍为4?

这是gcc -v的输出:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.4.0
Thread model: posix  
trans by 2020-08-09T21:07:43Z

如何在C和C ++中将多维数组传递给函数

#include<stdio.h>
void print(int *arr[], int s1, int s2) {
    int i, j;
    for(i = 0; i<s1; i++)
        for(j = 0; j<s2; j++)
            printf("%d, ", *((arr+i)+j));
}

int main() {
    int a[4][4] = {{0}};
    print(a,4,4);
}

这适用于C语言,但不适用于C ++语言。

错误:

cannot convert `int (*)[4]' to `int**' for argument `1' to 
`void print(int**, int, int)'

为什么在C ++中不起作用? 需要进行哪些更改?

trans by 2020-08-09T21:00:49Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共106页