nixp.ru v3.0

16 ноября 2024,
суббота,
04:43:46 MSK

Uncle Theodore написал 16 октября 2004 года в 19:55 (1251 просмотр) Ведет себя неопределенно; открыл 58 тем в форуме, оставил 1537 комментариев на сайте.

Мои детишки пишут свои проги на Visual C++ от известной компании. У факультета есть какая-то забавная лицензия, позволяющая раздавать этот продукт студентам бесплатно, чем они и пользуются. Я сразу как пришел на факультет, поставил на свою офисную машину Slackware, а студентам сказал, что проекты они мне будут сдавать в виде исходников, которые я буду компилировать сам. Мы изучаем OpenGL, поэтому если писать на стандартном C++ используя GLUT, исходники будут прекрасно переносимы между системами. Написание переносимого кода было даже указано в качестве одной из целей курса.

И тут-то началось самое интересное…

Программы моих студентов сегфолтятся или вообще отказываются компилироваться со странными ошибками. Сначало было просто

main() must return int — Visual C++ проглатывает void main() в С++шной проге запросто.

for(int k=0;k<10;k++)

{cout << k << endl;};

int a = k;

Переменная k не определена снаружи цикла, тем не менее, такой код компилится на Visual C++ и исполняется на Винде!

int a[2];

int b = a[5];

Компилируется (что не удивительно) и исполняется на Винде. У меня, конечно, segfault.

int *arr = new int[5];

<..>

delete [5] arr;

-- компилируется и исполняется на Винде!

vector < vector > doubleArray(0);

doubleArray.resize(3);

double bubble = doubleArray[1][1] + doubleArray[1][2] + doubleArray[1][3];

-- компилируется и исполняется на Винде! У меня заняло полдня найти эту ошибку в пятистах линиях кода…

Я установил Линух на одну машину в лабе, сделал аккаунты всем своим студентам, глава департмента пообещал выдать еще три под Линух и Фрю — для студентов. Посвятил вчерашнюю лекцию объяснениям, как компилить проги на Линухе, как дебагить и редактировать. Сказал, что больше не буду принимать объяснения, что их проги работают под Виндой, а у меня сегфолтятся или не компилятся.

Но как-то криво они на меня поглядывают… Что б вы делали на моем месте? Я ж учить их должен правильному программированию, а не приколам одного IDE…

Good Luck,

UT

slice

Мне бы такого учителя как Вы!

Абсолютно Полностью Вас поддерживаю.

Противоположный пример — у нас препод игнорирует любые warnings, которые вызывает компилятор и даже не удосуживается их объяснить, просто говорит «забейте на них и все», а в лине такое не пройдет, и это, ИМХО, гуд.

Так что ДОЛОЙ КРИВОЕ ПРОГРАММИРОВАНИЕ В ВИНДЕ, ПИШИТЕ В *nix!! :))

semka

Я тут как адвокат Дьявола (-: Еще ни кто не забыл?

Да, действительно, MSVC++ мягко говоря странноватый компилятор…

Но ведь вы не знаете, КАК он обходит вышеупомянутые проблемы? То ли он глотает баг как есть и оставляет дыру с возможностью сегфолта впоследствии, то ли он ее лотает своими средствами (что мне кажеться более правдоподобным). А вообще, есть под винду замечательное ИДЕ Dev-C++ называеться. Юзает MinGW (Minimalist GNU for Windows). Включает в себя gcc и базовые проги для компиляции и дебага. (Именно MinGW используеться для разработки ReactOS. Благодаря этому она одинаково хорошо компилиться как в винде, так и в Линуксе.)

Рекомендую студентам подсунуть. Проблем с компиляцией не будет, и косо смотреть перестанут.

Противоположный пример — у нас препод игнорирует любые warnings, которые вызывает компилятор и даже не удосуживается их объяснить, просто говорит «забейте на них и все», а в лине такое не пройдет, и это, ИМХО, гуд.


Фтопку такого препода… Мало ли какие бывают варнинги…

Наш, пока все варнинги не истрибишь, проект не принимает.

Так что ДОЛОЙ КРИВОЕ ПРОГРАММИРОВАНИЕ В ВИНДЕ, ПИШИТЕ В *nix!! :))

На «ДОЛОЙ КРИВОЕ ПРОГРАММИРОВАНИЕ» можно было остановиться, винда тут не при чем.

slice

Кстати такой вот вопрос к Uncle Theodore. Через какой период времени после начала обучения С++, Вы даете студентам понятие базового класса, производного класса….

Uncle Theodore
tappak
Я тут как адвокат Дьявола (-: Еще ни кто не забыл?

Да, действительно, MSVC++ мягко говоря странноватый компилятор…

Но ведь вы не знаете, КАК он обходит вышеупомянутые проблемы? То ли он глотает баг как есть и оставляет дыру с возможностью сегфолта впоследствии, то ли он ее лотает своими средствами (что мне кажеться более правдоподобным).

А! так ведь проблема не в том, КАК он их обходит! А в том, что он ни слова не говорит, что вот тут ему пришлось обойти проблему! Если б они писали для себя или для друзей, гори оно огнем, это IDE. Задача ведь в том, чтобы научить студента правильному использованию стандартов языка. У нас стабильное число выпускников (5 — 10) идут работать программистами в организации, занимающиеся научным моделированием на мейнфреймах, на юниксовых рабочих станциях, на черт знает еще каких системах с разными архитектурами и компиляторами. Я пытаюсь внушить им, что строгое следование стандартам языка позволит им работать на любых машинах. Не говоря уж о том, что выработка правильных навыков программирования невозможна без строгого следования этим стандартам.

Я, кстати, еще гляну, как VC++ обходит нелегальное обращение с памятью. У меня сейчас VC++ нет, в понедельник на работе посмотрю.

Мне коллега сказал, что когда-то давно у них уже была такая проблема с Борландовым C++ом — проги, которые студенты скомпилили на VC++ не хотели компилиться на Борланде. Тогда был другой глава факультета, он и придумал бесплатно раздавать студентам VC++, морда козлячая… Наш теперешний руководитель хочет создать в лабе зоопарк различных ОСей, так что хоть здесь мне повезло… :-)

А вообще, есть под винду замечательное ИДЕ Dev-C++ называеться. Юзает MinGW (Minimalist GNU for Windows). Включает в себя gcc и базовые проги для компиляции и дебага. (Именно MinGW используеться для разработки ReactOS. Благодаря этому она одинаково хорошо компилиться как в винде, так и в Линуксе.)

Рекомендую студентам подсунуть. Проблем с компиляцией не будет, и косо смотреть перестанут.

Спасибо, я посмотрю. Хотя косяки все равно будут. :-) С точки зрения студента, как это выглядит? Все было хорошо, потом пришел какой-то дядька с Линухом под мышкой, и все ему не так. Дали вот такую конфетку в виде компилятора от самого Мелкософта, так вот Биллу Гейтсу мой код нравится, а этому пингвинисту, видите ли — нет… :-)

На «ДОЛОЙ КРИВОЕ ПРОГРАММИРОВАНИЕ» можно было остановиться, винда тут не при чем.

При чем. Может, программировать на Винде и хорошо, а вот учить программированию — напряг…

Good Luck,

UT

Uncle Theodore
pravednix
Кстати такой вот вопрос к Uncle Theodore. Через какой период времени после начала обучения С++, Вы даете студентам понятие базового класса, производного класса….

Я не учу их языку, язык они к моим лекциям уже знают (в основном, это четверокурсники). А вообще, это одна из больших проблем сейчас на факультете. Computer Science I и II основаны на Java, соотвественно, первая прога, которую студенты пишут, начинается со слов public static class… И они до второго семестра не имеют не малейшего представления, что это такое…

Я убедил главу департмента, и со следующего года мы введем стандартный обязательный начальный курс по C++ во втором семестре. Кроме того, я буду читать курс по Software Design в следующем семестре, его переименуют в Computer Science III и сделают обязательным. Там я сделаю упор на иерархическую структуру софтверного проекта и использование объектно-ориентированной структуры языков (вместо рассчета стоимости проектов, как это делается сейчас).

Хороший мужик этот новый глава департмента… Он, кстати, доктор технических наук, не программист формально. Но шарит сурово. :-) Чья б корова мычала, да? :-)

Good Luck,

UT

pol

@То ли он глотает баг как есть и оставляет дыру с возможностью сегфолта впоследствии, то ли он ее лотает своими средствами (что мне кажеться более правдоподобным).@

вероятней всего первое — что легко проверить!

semka
pol
вероятней всего первое — что легко проверить!

Так-так. Интересно! (-:

Проверьте и нам скажете. Я склоняюсь ко второму варианту, ибо Микрософт опираеться на простоту во всем. Хорошо это или плохо, зависит от конкретного случая. В недавнем прошлом, по должности программиста в родном универе, был вынужден писать далеко не маленький проект на VBA с завязкой на Excell/Access. Дак вот там, простота кодирования оправдана. Там действительно, ЗАВЕДОМО НЕРАБОЧИЙ код, интерпретируеться и работает. И работает правильно! А сделано это для того, что бы на VBA смог ла писать даже девица-секретарь, не то, что без высшего технического, с незаконченым средним образованием.

Когда речь идет о разработке полноценного ПО, а не приплюха к базе данных, такое упрощение недопустимо. Видимо Микрософт думает по-другому. Хотя… Как известно Си — язык для ленивых, но внимаетльных программистов. Базовый компилятор Си проглатывал такое вот:

int a[10]={1,2,3,4,5,6,7,8,9,0};
a[11] = 10;

Запросто. И писал вот это 10 в черте-какую память.

Так же и все нормальные компиляторы.

Язык Си требует от программиста внимания.

Это нормально. Сейчас, нормальные компиляторы (gcc) пишут варнинги. Это то же нормально. Но Микрософт, видимо, решила, что знает лучше программиста, что он хотел сказать. То, что компилятор обломит процесс при обнаружении подобного рода «ошибки» то же не есть тру. Ибо это может быть не ошибка а хитрый план программиста.

В принципе, стандартный компилятор MSVC соответсвует ANSI, а то, что при исполнении кривого кода ничто не падает в кору — заслуга Windows. А то, что при компиляции кривого кода нет варнингов — грех VC++.

Longobard

Наш учитель инфы (который кстати неплохой кодер на Дельфях и вобще умный мужик) — так он даже не смотрит на всякие ворнинги, а сам проверяет код. Если он нерационален по его мнению) — то программу он не принимает.

decvar

Когда у меня был базовый курс программирования на C, препод проверял наш код в Intel C++ Compiler 7.0 и считал его эталонным для x86. Я с ним согласен, хотя считаю компилятор MSVC достаточно хорошим. То что он не выкидывает варнинги и (наверное)лечит кривой код, впервом случае наверняка настраивается, а во втором заслуга компилятора. Прежде чем хаить рекомендую ознакомится с ключами компилятора. Там опций ни чуть не меньше чем у gcc, который я считаю не слишком оптимизирующим компилятором и качественным.

Uncle Theodore
decvar
Я с ним согласен, хотя считаю компилятор MSVC достаточно хорошим. То что он не выкидывает варнинги и (наверное)лечит кривой код, впервом случае наверняка настраивается, а во втором заслуга компилятора. Прежде чем хаить рекомендую ознакомится с ключами компилятора. Там опций ни чуть не меньше чем у gcc, который я считаю не слишком оптимизирующим компилятором и качественным.

Э-э, батенька, ты ври, да не завирайся. Первые две ошибки в моих примерах синтаксические. И ворнинги тут не при чем, компилятор не *имеет* права исправлять синтаксические ошибки самостоятельно, с ворнингами или без, поскольку он не знает, чтО именно хотел здесь написать программист! К тому же классу относится и

int *arr = new int[5];

<..>

delete [5] arr;

Ты, вроде, не один хелло ворлд в своей жизни написал, так что понимаешь это не хуже меня. А как VC++ «лечит» ошибки памяти, я завтра посмотрю, но тот же самый аргумент будет работать и здесь, так что лучше для репутации VC++, если бы он их не лечил совсем, чем подставлял свой код вместо написанного программистом.

Good Luck,

UT

PS Почитай вот эту статейку http://oakroadsystems.com/tech/msvc.htm

Там и про ключики есть, и про MSовские хедеры.

Uncle Theodore

Еще один прикол, кстати. После практики написания Сяшного кода в IDEях типа тра-ля-ляC++ у студентов складывается впечатление, что С и С++ это один и тот же язык. Это не есть сермяжная правда. Скомпилируйте вот этот код

#include

int main()

{

printf(«%s\n», (sizeof(’a') == sizeof(char)) ? «C++» : «C»);

return 0;

}

как С прогу и как С++ прогу, прогоните — узнаете кое-то интересное…

Good Luck,

UT

spark

прикольно :)

decvar
Э-э, батенька, ты ври, да не завирайся

А где это я соврал? В том, что он не выкидывает варнинги? Или в том что он (*наверное*) лечит кривой код?(передача массива по сслыке без проверки длинны и соответственно попытка записать в n+1 элемент при n размерном массиве) Или в том, что ключей у компилятора мало?

semka

Hаз уж пошел оффтоп, ловите камень в огород c++:

<<C>>

#include 
#include 
int main(int argc, char *argv[])
{
  
  system("PAUSE");      
  return 0;
}

<<C++>>

#include 
#include 
using namespace std;
int main(int argc, char *argv[])
{
  
  system("PAUSE");      
  return 0;
}

Все понимают, что проекты делают одно и то же.

[E:\dev\cppdoesntrule]:>gcc -o c main.c
[E:\dev\cppdoesntrule]:>g++ -o c++ main.cpp
[E:\dev\cppdoesntrule]:>ls *.exe
 Том в устройстве E имеет метку Storage
 Серийный номер тома: FCF5-05A2
 Содержимое папки E:\dev\cppdoesntrule
17.10.2004  21:09           424 654 c++.exe
17.10.2004  21:09            14 627 c.exe
               2 файлов        439 281 байт
               0 папок     835 059 712 байт свободно
[E:\dev\cppdoesntrule]:>

no comments.

c++ далеко не идеальный язык программирования. И лишние, да именно лишние классы из iostream.h никуда не деваються. Это только пример. c++ более удобный и, может быть, более гибкий чем c или objective c. Но непомерно расточительный.

decvar

К тому же я не понимаю, что тебе не нравится. Было бы грустно, если бы MSVC не компилил правильный код(ANSI), а только свой. Но раз он компилит и привильный и кривой(додумывая сам) так в чем проблема. Убеди студентов писать правильный код. MSVC тут не причем, это называется гибкость, и видимо студентам (и очень многим людям насрать на переносимость и сандарты), потому что если вруг MS выкинет свой c run-time lib совместимую с ANSI, 95% населения насрет на ANSI.

Так что вариант один- убедить писать правильный код, гарантируя, что код сделат именно то, что ты написал, а не попытается что-то исправлять. например автоматом приводя void main() к int main() и так в таком духе.

Более того, я полагаю,что где-то в глубине MSVC++ есть список самых распространнеых ошибок(типа как запись в int array[n]; array[n]=q;)и варианты их лечения.

pol

единственный способ научить студента, например меня, писать ПРАВИЛЬНЫЙ код, это как минимум, показывать все мои ошибки!

«Убеди студентов писать правильный код.» Одно дело убедить, и совсем другое дело показать на практике, что это не правильно — так не работает!

Longobard
Uncle Theodore
#include

int main()

{

   printf(«%s\n», (sizeof(’a') == sizeof(char)) ? «C++» : «C»);

   return 0;

}

Оп-па!!!!

А почему так???????

 printf(«%d\n», sizeof(’a') );

говорит 1.

и

 printf(«%d\n», sizeof(char) );

говорит тоже 1.

У него что, 1 не равно 1??!??!?!?!

Longobard
tappak
Hаз уж пошел оффтоп, ловите камень в огород c++:

<<C>>

#include 
#include 
int main(int argc, char *argv[])
{
  system("PAUSE");
  return 0;
}

<<C++>>

#include 
#include 
using namespace std;
int main(int argc, char *argv[])
{
  system("PAUSE");
  return 0;
}

Все понимают, что проекты делают одно и то же.

[E:\dev\cppdoesntrule]:>gcc -o c main.c
[E:\dev\cppdoesntrule]:>g++ -o c++ main.cpp
[E:\dev\cppdoesntrule]:>ls *.exe
 Том в устройстве E имеет метку Storage
 Серийный номер тома: FCF5-05A2
 Содержимое папки E:\dev\cppdoesntrule
17.10.2004  21:09           424 654 c++.exe
17.10.2004  21:09            14 627 c.exe
               2 файлов        439 281 байт
               0 папок     835 059 712 байт свободно
[E:\dev\cppdoesntrule]:>

no comments.

c++ далеко не идеальный язык программирования. И лишние, да именно лишние  классы из iostream.h никуда не деваються.  Это только пример. c++ более удобный и, может быть, более гибкий чем c или objective c. Но непомерно расточительный.

ТАПАК, НАХ ТЕБЕ iostream если ты не пользуешь тут никаких классов и пр. из него??!????!

кроме того есть strip, который вроде выкидывает лишнюю хрень их бинаря

Uncle Theodore
LONGOBARD
Оп-па!!!!

А почему так???????

printf(«%d\n», sizeof(’a') );

говорит 1.

и

printf(«%d\n», sizeof(char) );

говорит тоже 1.

У него что, 1 не равно 1??!??!?!?!

В Сяшной проге должно быть

sizeof(’a') == 4

sizeof(char) == 1

а в С++шной

1 и 1 соответственно. Какой у тебя компилятор?

Good Luck,

UT

Uncle Theodore
decvar
А где это я соврал?

Здесь:

То что он не выкидывает варнинги и (наверное)лечит кривой код, впервом случае наверняка настраивается, а во втором заслуга компилятора.

И в своем ответе я написал, почему компилятор (особенно такого языка как С) не должен пытаться молча исправлять код по своему усмотрению. Потому что он не знает, что именно имелось в виду. Может получиться такой баг, что никаким тестингом не отловишь, а в самый критический момент всему придет 3,14здец.

Так что вариант один- убедить писать правильный код, гарантируя, что код сделат именно то, что ты написал, а не попытается что-то исправлять. например автоматом приводя void main() к int main() и так в таком духе.

И как я его буду убеждать, студента-то? Он говорит, «У меня все работает, а у тебя — нет, значит проблема у тебя» А когда я его тыкаю носом в синтаксическую ошибку, говорит «А откуда я должен был знать что это ошибка? Все время так писал, все хорошо было!» И что? Воспетый тобой VC++ привил человеку неверные навыки программирования. Потом он идет программировать на мейнфрейм, а ты удивляешься, почему синоптики погоду правильно предсказать не могут, к примеру. Или почему самолеты на голову падают. Все еще думаешь, это хорошо, что добренький компилятор втихую ошибки правит?

Good Luck,

UT

Uncle Theodore
Uncle Theodore
втихую ошибки правит?

А вот это уже не есть правильно! В Т И Х У Ю означает «потихоньку», а не то, что цензура подумала… Долой цензуру! Даёшь свободу слова для народного русского мата! :-) Шутю.

Good Luck,

UT

semka
LONGOBARD
ТАПАК, НАХ ТЕБЕ iostream если ты не пользуешь тут никаких классов и пр. из него??!????!

кроме того есть strip, который вроде выкидывает лишнюю хрень их бинаря

Ну добавь сюда printf(..) и cout << … соответственно. Что-то измениться?

Да, есть приблуды. Но это именно приблуды, а не штатные средства компилятора. Что огорчает.

semka
Uncle Theodore
Здесь:

И в своем ответе я написал, почему компилятор (особенно такого языка как С) не должен пытаться молча исправлять код по своему усмотрению. Потому что он не знает, что именно имелось в виду. Может получиться такой баг, что никаким тестингом не отловишь, а в самый критический момент всему придет 3,14здец.

И как я его буду убеждать, студента-то? Он говорит, «У меня все работает, а у тебя — нет, значит проблема у тебя» А когда я его тыкаю носом в синтаксическую ошибку, говорит «А откуда я должен был знать что это ошибка? Все время так писал, все хорошо было!» И что? Воспетый тобой VC++ привил человеку неверные навыки программирования. Потом он идет программировать на мейнфрейм, а ты удивляешься, почему синоптики погоду правильно предсказать не могут, к примеру. Или почему самолеты на голову падают. Все еще думаешь, это хорошо, что добренький компилятор втихую ошибки правит?

Good Luck,

UT

Так оно, не должон компилятор править «ошибки» сам.

Или хотя бы должон об этом говорить.

Negative
Uncle Theodore
В Сяшной проге должно быть

sizeof(’a')   ==  4

sizeof(char)  == 1

а почему так?

я все книжки свои перерыл, никак понять не могу зачем 'a' четыре байта

Genie

afair. sizeof(’a')==sizeof(int) :)

посему,

В Сяшной проге должно быть

sizeof(’a') == 4


не всегда соответствует истине… ;))))

а почему так?


потому, что можно сделать

int my(void)
{
int a;
a='ab';
printf("%d",a);
}
Negative
Genie
afair. sizeof(’a')==sizeof(int) :)

ну вообще-то в проге на С++ int тоже 4 байта, однако 'a' всего один байт

Longobard
tappak
Ну добавь сюда printf(..) и cout << … соответственно. Что-то измениться?

Да, есть приблуды. Но это именно приблуды, а не штатные средства компилятора. Что огорчает.

кури ман. gcc умеет при указании флага ( вроде -s) прогонять бинарь через strip

Longobard
Uncle Theodore
а в С++шной

1 и 1 соответственно. Какой у тебя компилятор?



longobard somewhere_in_deep_ass # g++ --version
g++ (GCC) 3.4.2  (Gentoo Linux 3.4.2-r2, ssp-3.4.1-1, pie-8.7.6.5)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
longobard somewhere_in_deep_ass #
Uncle Theodore

2LONGOBARD:

$ cat corcpp1.c

#include

int main()

{

printf(«%s %d\n», «Size of a is », sizeof(’a') );

printf(«%s %d\n», «Size of char is », sizeof(char) );

return 0;

}

$ /usr/bin/gcc-3.3.4 corcpp1.c -o corcpp1

$ corcpp1

Size of a is 4

Size of char is 1

$ /usr/local/gcc-3.4.2/bin/gcc corcpp1.c -o corcpp1

$ corcpp1

Size of a is 4

Size of char is 1

Хм… Чей-то тута не тово-то… А! Понял! 4 байта на 'a' отводит С, а не С++, при чем здесь g++?

Good Luck,

UT

semka
LONGOBARD
кури ман. gcc умеет при указании флага ( вроде -s) прогонять бинарь через strip



[E:\dev\cppdoesntrule]:>g++ -s -o c++ main.cpp
[E:\dev\cppdoesntrule]:>gcc -s -o c main.c
[E:\dev\cppdoesntrule]:>ls
 Том в устройстве E имеет метку Storage
 Серийный номер тома: FCF5-05A2
 Содержимое папки E:\dev\cppdoesntrule
18.10.2004  23:39    


.

18.10.2004 23:39
..

18.10.2004 23:39 217 600 c++.exe

18.10.2004 23:39 5 120 c.exe

17.10.2004 21:07 121 main.c

17.10.2004 21:07 146 main.cpp

4 файлов 222 987 байт

2 папок 832 352 256 байт свободно

[E:\dev\cppdoesntrule]:>

(-: Моя плакаль.

Longobard

Н ХЗ, во многих makefile я видел пользование stip ;)

Negative

ну так почему 'a' в С — это 4 байта, а в С++ 1 байт? :)))

я уже всех знакомых достал

decvar

Видимо я что-то не понимаю, но на IA-32 char должен быть 4 байта т.е. два слова. Поскольку у нас слово — два байта, полагаю что компилятор C++(g++) нихрена не char пользует, а нечто иное.

Negative

// MSDN все-таки хорошая вещь :)

PRB: Sizeof Constant Character Returns Different Values

ID: Q150380

——————————————————————————--

The information in this article applies to:

The Microsoft C/C++ Compiler (CL.EXE)

Microsoft Visual C++ 32-bit Edition, versions 4.0, 4.1

——————————————————————————--

SYMPTOMS

The sizeof(’x') or sizeof(L’x') constants do not return expected results. In C, the return value is 4 for the sizeof character constant and 2 for the sizeof multicharacter constant. In C++, the return value is 1 for the sizeof character constant and 2 for the sizeof multicharacter constant.

CAUSE

The specification on this point is different for C from what it is for C++. In C, a character constant is of type int. In C++, a character constant is of type char. Multicharacter constants are implementation dependent.

RESOLUTION

When using C, do not use sizeof to determine the width of a character constant. Use sizeof(«») to give the width of one character in both C and C++.

STATUS

This behavior is by design.

REFERENCES

For more information, see «The Annotated C++ Reference Manual» by Margaret Ellis and Bjarne Stroustrup, Section 2.5.2.

Additional query words: 2.00 2.10 2.20 4.00 4.10

Keywords : kbCompiler kbCRT kbVC

Version :

Platform : NT WINDOWS

Issue type :

Last Reviewed: January 14, 2000

© 2000 Microsoft Corporation. All rights reserved. Terms of Use.

Последние комментарии

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.