小编ele*_*der的帖子

为什么我的代码没有引发重复的符号冲突

为什么我的以下代码没有引发重复的符号冲突?

我提到了名称重整,但这似乎仅在参数存在差异时出现。但是,这里的参数没有差异。但是,它仍然不会引发冲突。为什么?

#include <stdio.h>

void printGood() {
    printf("I am good");
}
Run Code Online (Sandbox Code Playgroud)

完美的

#include <stdio.h>

void printGood() {
    printf("I am perfect");
}
Run Code Online (Sandbox Code Playgroud)

交流电

extern void printGood();

void bringGood() {
    printGood();
}
Run Code Online (Sandbox Code Playgroud)

公元前

extern void printGood();

void bringPerfect() {
    printGood();
}
Run Code Online (Sandbox Code Playgroud)

编排器

#include <stdio.h>

void bringGood();
void bringPerfect();

int main() {
    printf("bringing good");
    bringGood();
    printf("bringing perfect");
    bringPerfect();
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

编译行:

gcc -g -c good.c
gcc -g -c perfect.c

gcc -g -c A.c
gcc -g -c B.c

gcc -g -c orchestrator.c …
Run Code Online (Sandbox Code Playgroud)

c linker duplicate-symbol

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

为什么编译器不检查覆盖函数的存储类?

#include <iostream>

class A{
public:
  void printit(register int b) {
     std::cout<<"inside A";
  }
};

class C:public A{
public:
  void printit(int b) {
     std::cout<<"inside C";
  }
};

int main() {
C c;
c.printit(1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,printit 是 C 中的一个重写方法,没有存储类寄存器。但是,编译器仍然匹配,并且代码打印“inside C”。为什么寄存器 int 与 int 匹配?

c++ overriding storage-class-specifier

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