spamsink: (Default)
[personal profile] spamsink
Берем GCC. Читаем список ключей командной строки.

Видим -fdollars-in-identifiers Allow the use of $ inside identifiers

который там далеко не вчера появился. Пишем

#include <stdio.h>
char
$foo[] = "Hello, world?";
main() {
puts($foo);
}

Компилируем это дело на интеловской платформе (у меня даже без вышеупомянутого ключа компилируется), запускаем - работает. Добавляем в программу первым оператором
$foo[12] = '!';
и получаем... что?

Оценка за этот тест равна 5 минус количество запусков компилятора, которое вам потребуется, чтобы объяснить явление.

Date: 2007-06-06 01:35 am (UTC)
From: [identity profile] ygam.livejournal.com
/tmp/ccY3JzFw.s: Assembler messages:
/tmp/ccY3JzFw.s:18: Error: suffix or operands invalid for `mov'

Date: 2007-06-06 01:38 am (UTC)
From: [identity profile] ygam.livejournal.com
В этом синтаксисе интеловского ассемблера доллар стоит перед литералами.

Я запускал компилятор дважды, второй раз с -save-temps.

Date: 2007-06-06 01:37 am (UTC)
From: [identity profile] ygam.livejournal.com
gcc -save-temps foo.c

foo.s: Assembler messages:
foo.s:18: Error: suffix or operands invalid for `mov'

movb $33, $foo+12

Date: 2007-06-06 01:52 am (UTC)
From: [identity profile] zhenyach.livejournal.com
Небось, когда '$' - это первый непробельный символ в строке, он как-то по-особому интерпретируется, вроде раскрытия переменной среды.

Date: 2007-06-06 02:00 am (UTC)
From: [identity profile] zhenyach.livejournal.com
Удаленного коммента не понял: в нём же доллар - не первый символ в строке.

Date: 2007-06-06 02:22 am (UTC)
From: [identity profile] gmz.livejournal.com
У меня какой-то неправильный gcc? Получается ровно "Hello, world!".

Date: 2007-06-06 02:29 am (UTC)
From: [identity profile] gmz.livejournal.com
gcc/i686-pc-cygwin/3.4.4

Date: 2007-06-06 05:41 am (UTC)
From: [identity profile] rqk.livejournal.com
Гыгыгыгы. Даже понятно почему :)

Date: 2007-06-06 02:38 am (UTC)
From: [identity profile] ex-java-duk.livejournal.com
Спьяну посмотел на код и подумал "С какой это радости Леня на PHP перешел?"

Date: 2007-06-06 03:42 am (UTC)
From: [identity profile] ex-java-duk.livejournal.com
Ну почему, в идеальном варианте их всего две надо:

Date: 2007-06-06 02:33 pm (UTC)
From: [identity profile] boris71.livejournal.com
Мой, ныне практически любимый MS VC++ 2005 выдал
Hello, world!
Кстати, никаких спец ключей применено не было.

Date: 2007-06-06 03:07 pm (UTC)
From: [identity profile] boris71.livejournal.com
Я как-то тоже, но компилировал и думал, может есть какой-то потрясающий подвох в использовании денежных знаков в именах переменных ;-).

Profile

spamsink: (Default)
spamsink

April 2026

S M T W T F S
   1234
567891011
1213 1415161718
19 202122232425
2627282930  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 30th, 2026 01:29 am
Powered by Dreamwidth Studios