小编Nik*_*kos的帖子

被调用对象不是函数或函数指针

我有以下代码.

typedef pid_t (*getpidType)(void);

pid_t getpid(void)
{
    printf("Hello, getpid!\n");
    getpidType* f = (getpidType*)dlsym(RTLD_NEXT, "getpid");
    return f(); // <-- Problem here
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨说called object ‘f’ is not a function.这里发生了什么?我没有以正确的方式声明和使用函数指针f吗?

c linux gcc glibc x86-64

3
推荐指数
1
解决办法
6165
查看次数

在 VSCode 中自定义“反引号”内文本的颜色

我能找到的在 Visual Studio Code 中处理自定义着色的唯一选项是:

"editor.tokenColorCustomizations": {
    "[Atom One Dark]": {
        "comments": "#FF0000" // only 6 color-customizable
    },
    "workbench.colorCustomizations": {
        "statusBar.background": "#666666",
        "panel.background": "#555555",
        "sideBar.background": "#444444"
    },
},
Run Code Online (Sandbox Code Playgroud)

有没有办法为这些类型的东西设置自定义颜色?其中一个用于注释,用于字符串(在 内部"string")。我相信使用正则表达式的其他东西应该有类似的东西。提前致谢。

color-scheme syntax-highlighting editor visual-studio-code

3
推荐指数
1
解决办法
3995
查看次数

Code :: Blocks错误:ld返回1退出状态

我正在使用Code :: Blocks v 16.1.0.0以及它附带的MINGW.链接器存在问题.我无法使用单个头/源文件链接到源文件#include "sth".为了缩小问题,我的项目中只有1个源文件和1个头文件,但无论我使用什么文件和我尝试的选项,我都无法绕过这个错误.

这是构建日志

-------------- Build: Debug in MISC (compiler: GNU GCC Compiler)---------------

gcc.exe -Wall -Wextra -Wall -g -std=c99  -c C:\Users\username\Documents\CodeBlocks\C\MISC\readFileByChars.c -o obj\Debug\readFileByChars.o
g++.exe -LC:\Users\username\Documents\CodeBlocks\C\MISC -o bin\Debug\MISC.exe obj\Debug\readFileByChars.o readFileByChars.h.gch   
readFileByChars.h.gch: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))
Run Code Online (Sandbox Code Playgroud)

这是工具链目录:

在此输入图像描述

我之前没有任何程序运行实例.我也有MINGW独立工作(不在环境变量中包含它的bin文件夹,不要在构建期间混淆代码块),但是对于代码块,我包括安装附带的预先打包的代码块.当我单击选项链接我的项目中的头文件时,项目将无法构建(但如果我不链接文件,我如何构建我的应用程序?).我重复这个项目是空的,我只有一个标题,只包含一个源文件.我在这里看到过关于此问题的其他类似问题,但他们的解决方案无效.帮助将不胜感激.谢谢.

c linker codeblocks linker-errors ld

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

如何在 Sublime Text 中用制表符替换所有 2 个空格组?

我想将使用 2 个空格缩进的文件转换为使用制表符的文件。我如何指定这个正则表达式替换

我可以用这个找到正则表达式:/^( )+/ 但是我现在如何用制表符替换每个 2-space 组?

提前致谢。

regex regular-language sublimetext3

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

为什么std :: is_assignable不能用于原始类型?(确认)

为了更具体的 std::is_assignable_v<int, int> << '\n'; 回报false?是因为int没有重载赋值运算符(原始类型和所有)?

(顺便std::is_trivially_assignable_v<int, int>false过.)

请注意:这 struct Structure {}; std::is_assignable<class Structure, class Structure>::value; 将返回true,因为隐式定义了重载的赋值运算符Structure.

到目前为止我是否正确?如果是这样,那么我认为增强is_assignable接受原始类型也不是一件容易的事吗?否则,任何有关这种可能的解决办法的提示?

c++ overloading assignment-operator assign

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

C ++中此语法std :: class &lt;&gt; {}(arg1,arg2)的含义是什么?

我看到过的例子:

std::cout << std::plus<>{}(a, b) << '\n';这里的问题。

std::hash<T>{}(54879)

和其他人,我现在找不到它们。

我知道object{}object()调用默认的ctor,object{val}object(val1,val2)调用带参数的构造函数。和object<>{}object<T>()显式指定对象的任何类型参数。但是,当所有这些一起使用时,这意味着什么呢?我也找不到说明此问题的文章或网页,否则我可能会遗漏某些东西。它是什么?

c++ constructor object std type-parameter

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

如何在Emacs(GUI /终端)上更改语法高亮的颜色?

如何更改emacs程序的语法高亮颜色?相关问题"更改Emacs语法突出显示颜色"对我没有帮助.也许它是过时的,不完整的,或者只是假设太多.这个地方有教程吗?提前致谢.

emacs syntax-highlighting colors

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

为什么BACKSPACE(\ b)不能像文件一样工作?

我打开了一个(文本)文件,就像这样:File *fp = fopen("findPattern2.txt", "w+");我写了文字.我在那里的最后一个角色是,.现在我想使用退格键删除该字符.我在这里读到的答案是BACKSPACE只移动光标,然后我必须通过在它上面写字来覆盖那个字符,这就是我所做的.所以我做fprintf(fp, "\b \b")了彻底擦除,,但这是文件后面显示的内容:,BS BS.所有这些都与终端一起工作.为什么不用文件?

从我收集的内容来看,只有内存映射它,编辑其内容,将它们复制到新文件并删除旧文件.

c printf file backspace

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

Sublime Text 3 Word Wrap(默认设置)不再有效

这些是我崇高的文字自定义设置:

{
    "auto_complete_triggers":
    [
        {
            "characters": ".",
            "selector": "source.js"
        }
    ],
    "auto_match_enabled": false,
    "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",
    "font_size": 10,
    "save_on_focus_lost": true,
    "auto_complete_commit_on_tab": true,
    "ignored_packages":
    [
        "Vintage"
    ],
    "word_wrap": true
}
Run Code Online (Sandbox Code Playgroud)

如您所见,正确启用了自动换行功能.启用自动换行的唯一方法是在每个文件的基础上进行操作,方法是转到View - > Word Wrap(tick).这个设置很久以前工作正常.现在显然发生了一些事情,它已经不再适用了.除了安装插件之外,不记得它是什么了.救命.

editor word-wrap sublimetext sublimetext3

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

如果堆栈在数字较低的地址处增长,为什么指针比较会逆转呢?

由于堆栈向下增长,即朝数字较小的内存方向扩展,所以这&i < &j是正确的。如果我错了,请指正我,但是我想这是C创建者(由C ++维护)的设计决策。但是我不知道为什么。

同样奇怪的是,堆分配的对象pin位于数值上比堆栈变量高的内存地址,这也与以下事实相矛盾:堆位于数值上比堆栈小(且向上递增)。

#include <iostream>

int main()
{
    int i = 5;                  // stack allocated
    int j = 2;                  // stack allocated
    int *pi = &i;               // stack allocated
    int *pj = &j;               // stack allocated

    std::cout << std::boolalpha << '\n';
    std::cout << (&i < &j) && (pi < pj) << '\n';            // true
    struct S
    {
        int in;
    };
    S *pin                      // stack allocated
        = new S{10};            // heap allocated
    std::cout << '\n' …
Run Code Online (Sandbox Code Playgroud)

c++ heap stack design-decisions memory-address

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

用于打印文件中的行数和列数的代码.为什么它适用于Windows Mingw gcc环境而不适用于Linux?

代码适用于Windows上的任何编译器,但不适用于Linux.在Linux上,它返回的行数超过两倍,列数为负数.Win8.1 x86_64,Linux 16.04 64位.我在Windows(MINGW)上有GCC v5.3,但在Linux上有GCC v5.4.0.

#include <stdio.h>

// count Lines of a file
size_t countLinesOfFile(char *fileName)
{
    FILE *fp = fopen(fileName, "r");
    char ch;
    size_t lines = 0;
    do {
        ch = fgetc(fp);
        if(ch == '\n' || ch == '\r')
            lines++;
    } while (ch != EOF);
    //while (!feof(fp))

    // if last line doesn't end with a new line character! augment No of lines
    if(ch != '\n' || ch != '\r')
        lines++;

    fclose(fp);
    return lines;
}

// assuming that the …
Run Code Online (Sandbox Code Playgroud)

c linux gcc cross-platform file

0
推荐指数
1
解决办法
178
查看次数

奇怪的重复模板模式 - 不能创建超过1个派生类?

我坚持使用这种模式,因为我创建的只有一个派生类得到实例化.用g ++和MSVS检查.具体来说,只创建了我定义的第一个派生类.编译器不会发出任何类型的警告.完整代码如下.

#include <iostream>

static int nodes = 0;

class TreeNode {
private:
    int m_id;
public:
    TreeNode() : 
        m_id(++nodes)
    {}
    TreeNode(int id) :
        m_id(id)
    {
        ++nodes;
    }
    TreeNode* left;
    TreeNode* right;

    int getId() const {
        return m_id;
    }
};


template<typename T>
//typename std::enable_if<std::is_base_of<TreeParser, T>::value>::type
class TreeParser {
protected:
    TreeParser() {
        ++parsers;
    }
public:
    static uint32_t parsers;
    void preorderTraversal(TreeNode* node) {
        if (node != nullptr) {
            processNode(node);
            preorderTraversal(node->left);
            preorderTraversal(node->right);
        }
    }
    virtual ~TreeParser() = default;

    void processNode(TreeNode* node) {              // 2, …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance templates static-polymorphism c++14

0
推荐指数
1
解决办法
78
查看次数