Есть ли (связанные с производительностью) недостатки при компиляции кода C с помощью компилятора Visual Studio C ++? - PullRequest
2 голосов
/ 08 апреля 2011

Я впервые работаю с Visual Studio (2010), и я заметил, что:

int *x = malloc(sizeof(int) * 50);

выдает ошибку при попытке собрать "main.c". Я предполагаю, что это потому, что VS использует свой компилятор C ++ для сборки программ на языке C.

Является ли код, сгенерированный VS для C, таким же хорошим, как и под Windows, или я должен искать что-то лучшее и / или эксклюзивное для C?

Ответы [ 3 ]

4 голосов
/ 08 апреля 2011

Я предполагаю, что это потому, что VS использует свой компилятор C ++ для сборки программ на языке C.

Ваше предположение неверно: в этой строке кода нет ничего плохого и фактическиVisual C ++ скомпилирует его без ошибок:

c:\dev>type stubby.c
#include <stdlib.h>

int main(void)
{
    int *x = malloc(sizeof(int) * 50);
}

c:\dev>cl stubby.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

stubby.c
Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:stubby.exe
stubby.obj

c:\dev>

Подходит ли Visual C ++ для ваших нужд, зависит от ваших потребностей.Он не поддерживает C99;Если для вас важна поддержка C99, вам нужно найти другой компилятор.Он не поддерживает множество расширений языка GNU;если они важны для вас, вы захотите найти другой компилятор.

1 голос
/ 08 апреля 2011
  1. Это не имеет ничего общего с производительностью; это ограничение языка. В C ++ вам нужен приведение:

    int *x = (int*)malloc(sizeof(int) * 50);
    
  2. Есть и другие компиляторы для Windows, кроме компилятора Visual C ++; взгляните на G ++ (часть MinGW GCC ), например.

  3. В общем, компиляторы C могут оптимизировать лучше, чем компиляторы C ++. Но я не думаю, что использование одного и того же точного компилятора в режиме C ++ имеет какое-либо значение, чем запуск его в режиме C, по крайней мере, обычно.

0 голосов
/ 08 апреля 2011

Я не использую компилятор Visual Studio исключительно потому, что он не совместим с C99, и я считаю, что с C99 работать намного проще.

Лично я использую MinGW + GCC, но вместо Visual Studio я использую Notepad ++. Я знаю, что определенно возможно заставить Visual Studio компилироваться с использованием GCC, но я не знаю никого, кто бы это сделал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...