小编Pav*_*ath的帖子

extern声明和函数定义都在同一个文件中

我只是浏览gcc源文件.在gcc.c,我发现了类似的东西

extern int main (int, char **);

int
main (int argc, char **argv)
{
Run Code Online (Sandbox Code Playgroud)

现在我的疑问是extern告诉编译器特定的函数不在这个文件中,但是会在项目的其他地方找到.但是在这里,定义main是在extern声明之后立即.extern宣言服务的目的是什么?

看起来,在这个具体的例子中, extern似乎表现得像export我们在汇编中使用的那样,我们在模块之外输出一个特定的符号

有任何想法吗?

c declaration extern function-declaration

11
推荐指数
2
解决办法
1万
查看次数

setvbuf无法使stdin无缓冲

我的主要目的是在getchar获得角色后立即返回,而不是等待ENTER密钥.我试过这个

int main()
{
    setvbuf(stdin,NULL,_IONBF,0);
    getchar();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

将其与原型进行比较 setvbuf

setvbuf ( FILE * stream, char * buffer, int mode, size_t size );
Run Code Online (Sandbox Code Playgroud)

它应该设置stdin为无缓冲模式.

但仍然getchar()在等待ENTER

我见过这样的相关帖子

在C中读取字符时打印

这表明制作stdin无缓冲的替代方法.但我很想知道为什么setvbuf方法不起作用

c buffer stdin getchar unbuffered

10
推荐指数
1
解决办法
6580
查看次数

如何使用/ dev/kmem?

更新了我的帖子......

我得到了以下程序.它运作/dev/kmem/dev/mem.

我想我可以从代码中学到一些东西.但是当我在Beagle Board上运行它时,结果如下:

case 1: ( if(1) )
    root@omap:/home/ubuntu/tom# ./kmem_mem /boot/System.map-3.0.4-x3
    found jiffies at (0xc0870080) c0870080
    /dev/kmem read buf = 319317
    jiffies=319317 (read from virtual memory)

    /dev/mem: the offset is 870080
    the page size = 4096
    mmap: Invalid argument



case 2: ( if(0) )
    root@omap:/home/ubuntu/tom# ./kmem_mem /boot/System.map-3.0.4-x3 
    found jiffies at (0xc0870080) c0870080
    /dev/kmem read buf = 333631
    jiffies=333631 (read from virtual memory)

    /dev/mem: the offset is 870080
    /dev/mem read failed: Bad address
    jiffies=0 (read from …
Run Code Online (Sandbox Code Playgroud)

c linux mmap

10
推荐指数
1
解决办法
2万
查看次数

我们是否需要显式关闭管道的读取端,其写入结束已被关闭?

我有以下情况.

  1. 我创建了一个管道.

  2. 分叉儿童过程.

  3. Child 显式关闭管道的读取结束并写入管道的写入端并退出而不关闭任何东西(退出应该代表子节点关闭所有打开的文件/管道描述符,我推测).

  4. Parent 显式关闭管道的写端,并从管道的读取端读取,fgets直到fgets返回NULL.即它完全读取.

现在我的问题是,为什么父母需要在完成读取后显式关闭管道的读取端?一旦从读端读取完整数据,系统是否完全删除管道是不明智的?

我在父语句中明确地关闭了读取结束,并且Too many file descriptors在打开更多管道时迟早会出错.我的假设是,一旦管道写入结束并且数据已从读取端完全读取,系统会自动删除管道.因为你不能从管道两次!

那么,一旦数据完全读取并写入结束,系统背后的理由是不删除管道?

c pipe fgets inter-process-communicat

10
推荐指数
2
解决办法
5730
查看次数

如何识别两个不同版本的gcc是否兼容?

有时我从不同的设计团队获得图书馆.一个使用gcc 3.x,另一个使用gcc 4.x. 如何识别这两个库是否兼容?我知道它与libstdc ++有关,但你能否给我一个明确的答案?

c gcc

9
推荐指数
1
解决办法
228
查看次数

Android存储关闭日志在哪里?

我知道可以通过拉出kmsgdmesg通过内容来获取启动日志ADB.
但我不知道如何在Android中检索关机日志,因为Android中没有/var文件夹(大多数桌面Linux发行版通常存储其关机日志的地方).

那么如何在Android中获取关机日志?

linux logging android linux-kernel

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

动态链接器和动态加载器有什么区别?

我知道动态加载器的作用.它在运行时应用程序请求时加载程序,从而最小化内存占用量.但我真的没有得到这个动态链接器是什么?它的优点是什么?我读了很多网上的东西,但他们用抽象的语言说话.

有人可以用一些简单的例子来解释我吗?

linux linker operating-system loader

8
推荐指数
1
解决办法
2421
查看次数

提升字符串拆分以消除单词中的空格

我编写了这段代码,将包含许多空格和/或制表符的单词的字符串拆分为一个只包含单词的字符串向量.

#include<iostream>       
#include<vector>                        
#include<boost/algorithm/string/split.hpp>       
#include<boost/algorithm/string.hpp>                         
int main()                              
{                  
    using namespace std;                                     

    string str("cONtainS            SoMe    CApiTaL WORDS");       

    vector<string> strVec;              
    using boost::is_any_of;       

    boost::algorithm::split(strVec, str, is_any_of("\t "));       

    vector<string>::iterator i ;       

    for(i = strVec.begin() ; i != strVec.end(); i++)       
        cout<<*i<<endl;              

    return 0;                                             
}
Run Code Online (Sandbox Code Playgroud)

我期待一个输出

cONtainS
SoMe
CApiTaL
WORDS
Run Code Online (Sandbox Code Playgroud)

但是在空间中输出空间作为strVec中的一个元素即

cONtainS











SoMe



CApiTaL
WORDS
Run Code Online (Sandbox Code Playgroud)

c++ string boost split

8
推荐指数
1
解决办法
2万
查看次数

设计大数据的算法

我读了这个问题之一,被要求接受软件工程师的面试.

如果有1000个网站和1000个用户,请编写一个程序和数据结构,以便我可以实时查询以下内容:1.给定任何用户,我得到他/她访问过的所有网站的列表2.给予任何网站,我得到了访问它的所有用户的列表.

我认为他们想要一种伪代码或设计算法.

你们能为此提出任何建议吗?

c algorithm data-structures

8
推荐指数
1
解决办法
489
查看次数

为什么包含main方法的类没有实例化,在Java中仍然可以?

我开始编写我的第一个Java程序.

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,程序运行正常.但根据我的OOP知识,a class只是一个抽象的概念,并没有生出来,直到你创造了一个同类的对象.然后,通过该对象,我们调用类中的方法/函数.

但是在这个特定的例子中,似乎main即使没有创建对象也会调用该方法class HelloWorldApp

对象是否在其他地方创建?如果是这样,那部分代码如何知道我的class名字HelloWorldApp

java oop methods program-entry-point

7
推荐指数
1
解决办法
2335
查看次数