Çözüldü Linux Mint g++ iOStream kütüphanesini bulamıyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

nolonger

Hectopat
Katılım
27 Şubat 2021
Mesajlar
153
Merhabalar yazdığım C++ kodunda iOStream kütüphanesini dahil ediyorum fakat dosyası bulamıyor daha önce compiler ile uğraşmıştım bozmuştum ama sonra bir şekil tekrar düzeltmiştim.compileri silip tekrar yükle yaptım fakat bir şey değişmedi. Şimdiden yardımlarınız için teşekkürler.

[CODE lang="cpp" title="Shell"]g++ -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -o kernel.o -c kernel.cpp
kernel.cpp:5:10: fatal error: iostream: No such file or directory
#include <iostream>
^~~~~~~~~~
compilation terminated[/CODE]
 
Çözüm
Milyon tane açık kaynaklı projelere baktım stackoverflow dan araştırdım google abime sordum ama hala bulamadım...
Önceden söylemiştim hiçbir bilgim yok diye output ihtiyacım yok onun için print fonksiyonum var ve çalışıyor sadece input almam lazım şu interrupt kütüphanesini örnek olsun diyemi yaptın yoksa öyle bir kütüphane var mı?
@TerabyteForever avr/interrupt diye bir dosya var onu kullanarak yapabilir miyim?
Bu işe girdiysen kütüphane diye bir şeyin varlığını unutacaksın. Kütüphane diye bir şey yok. Sadece örnek olarak onu oraya koydum. Pseudocode diye belirtmiştim.

Şu işletim sistemine bakabilirsin, klavye sürücüsünü düzeltmiştim ve çalışır hale getirmiştim: GitHub - TerabyteForever/JupiteerOS-Reupload: Experimental Operating System (by @furkanonder)

Bu işletim sisteminde de bu iş inb ve outb Assembly komutlarıyla yapılıyor. Hani x86 port-mapped I/O ya...

E sen de C++ kullandığını belirtmişsin ve kafamdan öyle bir pseudocode yazayım dedim. Temelinde interrupt dinlemekte olay.
ya mesela ben komut ekliyorum echo değer olucak o değer ile echo komutunu ayıracak splice fonksiyonu gibi bir şey ile
Argümanları ayırmayı kastediyorsunuz sanarım.
Hangi iostream? Linux'taki mi? Eğer öyleyse, cevap hayır.

PS/2 klavye interrupt hattını dinle dostum. IRQ1. Gelen veriye göre hash table'dan karakter seçimi yaparsın. Şu tarz bir kod canlansın kafanda işte:

[CODE title="Pseudocode"]#include <interrupts>
#include <outputs>

#define IRQ1 1

character hash_table[] = {
'a','b','c'
};
ps2_get_kb_data(){
interrupt* kbd_ = null_pointer;
while((kbd_ = interrupt.get_interrupt(IRQ1)) != null_pointer){
output.current_output.write(hash_table[kbd_->get_value]);
}
}[/CODE]
IRQ1 den gelen veri hangi porttan gelmiş oluyor?
 
Şöyle bir şey yapabilirsin:
Bir döngü ile stringdeki ilk boşluk gördüğü yere kadar atla daha sonra aynı işlemi NULL karakter görene kadar tekrarlatırsın.
Tabii bu değerleri bir dizi gösteren dizide tutması lazım.
 
Şöyle bir şey yapabilirsin:
Bir döngü ile stringdeki ilk boşluk gördüğü yere kadar atla daha sonra aynı işlemi NULL karakter görene kadar tekrarlatırsın.
Tabii bu değerleri bir dizi gösteren dizide tutması lazım.
hocam discord insta vb. kullanıyorsanız size oradan ulaşabilir miyim? Birkaç sorum olucak da bu konu amacının dışına çıktı biraz
 
Hocam Discord Instagram vb. kullanıyorsanız size oradan ulaşabilir miyim? Birkaç sorum olacak da bu konu amacının dışına çıktı biraz

Kullanmıyorum. Ayrıca bu konularda pek bir bilgim yok.
Evet ya da mesela "echo - -deger değer buraya" şeklinde olabilir bildiğim kadarıyla javascriptte splice fonksiyonu var ama c için bulamadım herkes kütüphane kullanıyor
[CODE lang="c" title="C kodu"]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAX_WORD 16
#define MAX_LENGTH 32

typedef struct _Argumans
{
char **argv;
int argc;
}Argumans;

int iskey(unsigned char ch)
{
return (ch > 32 && ch != 127) ? 1 : 0;
}

char *find_double_quotes(char *str)
{
for(; *str != '\0'; str++)
{
if(*str == '\"')
{
return str;
}
}
return 0;
}

char *find_word(char *str)
{
for(; (iskey(*str) == 0); str++)
;
return str;
}

char **seperate_words(char *str, Argumans *arg)
{
static char **dizi;
char *temp, *tmp, *cift_tirnak_konumu;
int index = 0, toplam = 0, argc = 0, mindex = 0, cift_tirnak = 0;
dizi = (char **)calloc(MAX_WORD, sizeof(char*));
for(index = 0; index < MAX_WORD; index++)
{
dizi[index] = (char*)calloc(MAX_LENGTH, sizeof(char));
}
cift_tirnak = ((cift_tirnak_konumu=find_double_quotes(str)) == 0) ? 0 : 1;
for(index = 0, mindex = 0; str[index] != '\0'; mindex++)
{
temp = dizi[mindex];
str = find_word((str+index));
if(*str == '"')
{
for(index = 0; str[index+1] != '"'; index++)
{
temp[index] = str[index+1];
}
index+=2;
}
else
{
for(index = 0; (iskey(str[index]) != 0); index++)
{
temp[index] = str[index];
}
}
}
dizi[mindex] = '\0';
arg->argc = mindex;
arg->argv = dizi;
return dizi;
}

int main(void)
{
Argumans arg;
char str[50];
int index = 0;
printf("Bir metin giriniz: ");
gets(str);
seperate_words(str, &arg);
printf("Arguman sayisi: %d\n", arg.argc);
for(index = 0; arg.argv[index] != '\0'; index++)
{
printf("%d. eleman: %s\n", index+1, arg.argv[index]);
}
return 0;
}
[/CODE]

Şuna benzer bir kod var argümanlara ayırmayı sağlıyor. Kendi projene göre uyarlayabilirsin.
 
Son düzenleme:
Kullanmıyorum. Ayrıca bu konularda pek bir bilgim yok.

[CODE lang="c" title="C kodu"]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAX_WORD 16
#define MAX_LENGTH 32

typedef struct _Argumans
{
char **argv;
int argc;
}Argumans;

int iskey(unsigned char ch)
{
return (ch > 32 && ch != 127) ? 1 : 0;
}

char *find_double_quotes(char *str)
{
for(; *str != '\0'; str++)
{
if(*str == '\"')
{
return str;
}
}
return 0;
}

char *find_word(char *str)
{
for(; (iskey(*str) == 0); str++)
;
return str;
}

char **seperate_words(char *str, Argumans *arg)
{
static char **dizi;
char *temp, *tmp, *cift_tirnak_konumu;
int index = 0, toplam = 0, argc = 0, mindex = 0, cift_tirnak = 0;
dizi = (char **)calloc(MAX_WORD, sizeof(char*));
for(index = 0; index < MAX_WORD; index++)
{
dizi[index] = (char*)calloc(MAX_LENGTH, sizeof(char));
}
cift_tirnak = ((cift_tirnak_konumu=find_double_quotes(str)) == 0) ? 0 : 1;
for(index = 0, mindex = 0; str[index] != '\0'; mindex++)
{
temp = dizi[mindex];
str = find_word((str+index));
if(*str == '"')
{
for(index = 0; str[index+1] != '"'; index++)
{
temp[index] = str[index+1];
}
index+=2;
}
else
{
for(index = 0; (iskey(str[index]) != 0); index++)
{
temp[index] = str[index];
}
}
}
dizi[mindex] = '\0';
arg->argc = mindex;
arg->argv = dizi;
return dizi;
}

int main(void)
{
Argumans arg;
char str[50];
int index = 0;
printf("Bir metin giriniz: ");
gets(str);
seperate_words(str, &arg);
printf("Arguman sayisi: %d\n", arg.argc);
for(index = 0; arg.argv[index] != '\0'; index++)
{
printf("%d. eleman: %s\n", index+1, arg.argv[index]);
}
return 0;
}
[/CODE]

Şuna benzer bir kod var argümanlara ayırmayı sağlıyor. Kendi projene göre uyarlayabilirsin.
deniyeceğim
Kullanmıyorum. Ayrıca bu konularda pek bir bilgim yok.

[CODE lang="c" title="C kodu"]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAX_WORD 16
#define MAX_LENGTH 32

typedef struct _Argumans
{
char **argv;
int argc;
}Argumans;

int iskey(unsigned char ch)
{
return (ch > 32 && ch != 127) ? 1 : 0;
}

char *find_double_quotes(char *str)
{
for(; *str != '\0'; str++)
{
if(*str == '\"')
{
return str;
}
}
return 0;
}

char *find_word(char *str)
{
for(; (iskey(*str) == 0); str++)
;
return str;
}

char **seperate_words(char *str, Argumans *arg)
{
static char **dizi;
char *temp, *tmp, *cift_tirnak_konumu;
int index = 0, toplam = 0, argc = 0, mindex = 0, cift_tirnak = 0;
dizi = (char **)calloc(MAX_WORD, sizeof(char*));
for(index = 0; index < MAX_WORD; index++)
{
dizi[index] = (char*)calloc(MAX_LENGTH, sizeof(char));
}
cift_tirnak = ((cift_tirnak_konumu=find_double_quotes(str)) == 0) ? 0 : 1;
for(index = 0, mindex = 0; str[index] != '\0'; mindex++)
{
temp = dizi[mindex];
str = find_word((str+index));
if(*str == '"')
{
for(index = 0; str[index+1] != '"'; index++)
{
temp[index] = str[index+1];
}
index+=2;
}
else
{
for(index = 0; (iskey(str[index]) != 0); index++)
{
temp[index] = str[index];
}
}
}
dizi[mindex] = '\0';
arg->argc = mindex;
arg->argv = dizi;
return dizi;
}

int main(void)
{
Argumans arg;
char str[50];
int index = 0;
printf("Bir metin giriniz: ");
gets(str);
seperate_words(str, &arg);
printf("Arguman sayisi: %d\n", arg.argc);
for(index = 0; arg.argv[index] != '\0'; index++)
{
printf("%d. eleman: %s\n", index+1, arg.argv[index]);
}
return 0;
}
[/CODE]

Şuna benzer bir kod var argümanlara ayırmayı sağlıyor. Kendi projene göre uyarlayabilirsin.
kütüphane dahil etmeden çalışır mı?
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı