Új hozzászólás Aktív témák
-
jattila48
aktív tag
válasz
nonsen5e
#3826
üzenetére
.hpp-be lehetőleg ne tegyél fv. vagy globális változó defíníciót (csak deklarációt), mert ezeket beinklúdolod a különböző fordítási egységekbe, amik le is fordulnak, de mindegyik object kódban megjelenik a beinklúdolt fv. kódja, amit a linker többszörös definíciónak vesz. Pl:
//akarmi.hpp
#ifndef _AKARMI_HPP_
#define _AKARMI_HPP_
int f(int x){
return x;
}
#endif
//akarmi1.cpp
#include "akarmi.hpp"
#include <stdio.h>
int g(int x);
void main(void){
printf("%d",f(5));
printf("%d",g(6));
}
//akarmi2.cpp
#include "akarmi.hpp"
int g(int x){
return f(x);
}Itt az akarmi1.cpp-be, és az akarmi 2.cpp-be is bekerül az f fv. kódja, linkeléskor pedig dupla definíció miatt hibát ad a linker. Helyesen az akarmi.hpp-be csak deklaráció kerül (fv. prototype)
//akarmi.hpp
#ifndef _AKARMI_HPP_
#define _AKARMI_HPP_
int f(int x);
#endifés valamelyik .cpp állományba (akár új akarmi3.cpp-be) írod az f fv. definícióját.
Remélem tudtam segíteni.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Mibe tegyem a megtakarításaimat?
- PlayStation 3
- Poco F8 Ultra – forrónaci
- HiFi műszaki szemmel - sztereó hangrendszerek
- Lexus, Toyota topik
- Facebook és Messenger
- Anime filmek és sorozatok
- Xiaomi 15T - reakció nélkül nincs egyensúly
- exHWSW - Értünk mindenhez IS
- Durván kitömte memóriával két új Radeonját az AMD
- További aktív témák...
- Apple iPhone 15 / 128GB / Kártyafüggetlen / 12Hó Garancia / Akku:83%
- Astro A50 4th Gen wireless + base station fejhallgató
- Lenovo Thinkpad X13 Gen2 WUXGA IPS Ryzen5 Pro 5650U 16GB 512GB SSD Radeon RX Vega7 W11 Pro Garancia
- Lenovo Thinkpad X13 Gen1 Ryzen5 4650U Refurbished - Garancia
- 129 - Lenovo Legion Pro 7 (16ARX8H) - AMD Ryzen 9 7945HX, RTX 4080 (ELKELT)
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

