Jak skompilować program w C bez instrukcji int?

0

Tak jak w temacie jak skompilować taki kod?

#include<stdio.h>
main()
{
	char c, *ptr1;
	int x, *ptr2;
	float y, *ptr3;
	c = 'A';
	x = 7;
	y = 123.45;
	printf("c: adres=0x%p, zawiera = %c\n", &c, c);
	printf("x: adres=0x%p, zawiera = %d\n", &x, x);
	printf("y: adres=0x%p, zawiera = %5.2f\n", &y, y);
	ptr1 = &c;
		printf("ptr_c: adres=0x%p, zawiera=0x%p\n", &ptr1, ptr1);
	printf("ptr_c=>%c\n", *ptr1);
	ptr2 = &x;
		printf("ptr_x: adres=0x%p, zawiera=0x%p\n", &ptr2, ptr2);
	printf("ptr_x=>%d\n", *ptr2);
	ptr3 = &y;
		printf("ptr_y: adres=0x%p, zawiera=0x%p\n", &ptr3, ptr3);
	printf("ptr_y=>%5.2f\n", *ptr3);
	return 0;
}
3

Co to znaczy "bez instrukcji int"?

4
piotrek1998 napisał(a):

Tak jak w temacie jak skompilować taki kod?

kompilatorem:
https://godbolt.org/z/rG3d9chPd

Strzelam, że po prostu dałeś złe rozszerzenie dla pliku źródłowego, przez co kompilator założył, że to jest kod c++ a nie c.
Daj plik.c zamiast plik.cpp czy cokolwiek tam użyłeś,

0

To jest pisane wszystko w C. Facet z którym mam informatyke twierdzie że takie było pierwsze wydanie języka C napisane przez Ritchiego i Kerninghama

O czym mówię można przeczytać tutaj http://trash.ttrsite.net/jezykansic.pdf a tutaj jest fragment kodu z tej książki

#include<stdio.h>
main()
{
  printf("ahoj przygodo\n");
}

A tutaj jest to co wypluwa kompilator screen.png

1

To jest tylko ostrzeżenie a te nie przerywają kompilacji. wywaliłem return z twojego kodu i go GCC skompilował, z tym samym ostrzeżeniem.

0

To jest tylko warning, który możesz nawet wyłączyć. Tak czy inczej plik plik1 powienien powstać

0

Ok działa. A jest jakiś sposób żeby wyłączyć to ostrzeżenie przy kompilacji?

2
piotrek1998 napisał(a):

Ok działa. A jest jakiś sposób żeby wyłączyć to ostrzeżenie przy kompilacji?

-Wno-implicit-int

0

To ostrzeżenie tam ma być, zwłaszcza na Twoim etapie nauki. Typ zwracany należy określać, jego brak niczemu nie służy.

0

@piotrek1998: Jaki w ogóle masz cel w usuwaniu typu zwracanego?

0

u mnie działa też flaga -w, czyli wyłączenie wszelakich warningów. Ale jak już pisano jak najbardziej chcesz je widzieć.

0

Ok dzięki za pomoc

0

Zawsze możesz też użyć long-a zamiast int (w czasach gdy pamięci ram było mało był int-em dla większych liczb, obecnie nie ma między nimi różnicy)

#include<stdio.h>
long main()
{
    char c, *ptr1;
    int x, *ptr2;
    float y, *ptr3;
    c = 'A';
    x = 7;
    y = 123.45;
    printf("c: adres=0x%p, zawiera = %c\n", &c, c);
    printf("x: adres=0x%p, zawiera = %d\n", &x, x);
    printf("y: adres=0x%p, zawiera = %5.2f\n", &y, y);
    ptr1 = &c;
        printf("ptr_c: adres=0x%p, zawiera=0x%p\n", &ptr1, ptr1);
    printf("ptr_c=>%c\n", *ptr1);
    ptr2 = &x;
        printf("ptr_x: adres=0x%p, zawiera=0x%p\n", &ptr2, ptr2);
    printf("ptr_x=>%d\n", *ptr2);
    ptr3 = &y;
        printf("ptr_y: adres=0x%p, zawiera=0x%p\n", &ptr3, ptr3);
    printf("ptr_y=>%5.2f\n", *ptr3);
    return 0;
}

Na domyślnych flagach kompiluje się bez ostrzeżeń, a warunki zadania spełnione.

1 użytkowników online, w tym zalogowanych: 0, gości: 1