네, 됩니다!

C는 절차지향 프로그래밍 언어인데요?

C가 객체지향 프로그래밍 언어는 아닙니다.

문법적으로 객체지향 프로그래밍을 지원하지 않습니다. ( = 도와주지 않습니다. )

someObject.someMethod("Hello world!");

C++이나 자바 등의 언어에서는 이렇게 쓸 수 있는 것을, C로 한다면 이렇게 됩니다.

someObject.vtable->someMethod(&someObject, "Hello world!");

언어 차원에서 지원해주지 않을 뿐, 충분히 가능합니다.

C++이나 자바를 쓰면 객체지향 프로그래밍인가요?

객체지향 프로그래밍 언어는 언어 차원에서 객체지향 프로그래밍을 지원할 뿐입니다.

비구조적 프로그래밍 언어, 어셈블리

대표적으로 절차지향 프로그래밍이 아닌, 비구조적 프로그래밍 언어로 어셈블리가 있습니다.

cmp eax,3
je anywere ; anywere로 점프! anywere가 어디 있을까요? 아무도 몰라요.
mov eax,999

아무 곳에서나 아무 곳으로나 점프할 수 있습니다.

if나 비슷한 구조적 프로그래밍 문법을 지원하지 않습니다.

어셈블리로 구조적 프로그래밍?

하지만 그와 관련해 구조적인 규칙을 만든다면, 그리고 그를 지킨다면 구조적 프로그래밍입니다.

if/while같은 전형적인 구조를 정의하고, 그 구조에 맞지 않는 점프를 사용하지 않는 식으로요.

je my_if_skip ; if라는 문법은 없지만, if라면 아래 어딘가 있겠네요
mov eax,999
my_if_skip:

실제로 C의 콜 스택과 같은 개념을 사용해 어셈블리로도 함수를 만들어서 사용합니다.

비구조적 프로그래밍 언어임에도 불구하고 절차적 프로그래밍을 하고 있는 것이죠!

구조적/절차적 프로그래밍 언어, C

C는 구조적 프로그래밍이 편하도록 if/while 등의 구조를 언어 차원에서 문법적으로 지원합니다.

그리고 더 나아가 절차적 프로그래밍이 편하도록 함수를 언어 차원에서 문법적으로 지원합니다.

C로 비구조적 프로그래밍??

하지만 마찬가지로 C에서도 goto를 통해 아무 곳에서나 아무 곳으로 점프할 수는 있습니다.

함수나, if/while 등의 기능이 있는데도 goto를 남발한다면, 그건 비구조적 프로그래밍입니다.

int main(void) {
    loop_start:
    puts("Hello world!");
    goto loop_start; // 반복문이 있는데 굳이?
}

결론

그 언어에 객체지향 프로그래밍 관련 기능이 있는지와는 별개로, 객체지향적으로 짜지 않는다면...

객체지향 프로그래밍 언어를 사용하더라도 그건 객체지향 프로그래밍이 아닙니다.