проблемы кросс-компиляции с динамическим распределением памяти

Я написал программу для назначения, в которой я выделил память следующим образом:
EdgeBucket* edgeTable[ n_scanlines ];, Я понимаю, что это обычно незаконно в C, но я не знал, что это также не может быть сделано в C ++. Однако, когда я компилирую его, используя g ++, он не выдает ошибок компиляции. Но мой грейдер использует визуальную студию, и когда он попытался построить мою программу, она выдала ошибки, утверждающие, что длина массива должна быть постоянной. Обычно я компилирую свои программы с опциями -ansi и -Wall, чтобы обеспечить целостность кросс-компилятора, но даже это не обнаружило этого. Я обеспокоен тем, что мои оценки могут быть скомпрометированы, поэтому кто-нибудь знает, почему компилятор -ansi этого не уловил, и что можно сделать, чтобы предотвратить дальнейшие расхождения между кросс-компиляторами?

1

Решение

использование -pedantic-errors флаг. пример.

Они известны как VLA (массивы переменной длины). Законны в C от C99 и незаконны в C ++.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]